2010-11-23 65 views
0

我試圖創建一個方法,可以更新實體的子表,無論它是新的還是現有的。我的理解是,新的實體,我想補充的孩子是這樣的:LINQ:創建一個實體的子表,如果還沒有

ChildEntityENT child = new ChildEntityENT(); 
Entity.ChildEntityENT = child; 

從那時起,我可以訪問它像這樣:

Entity.ChildEntityENT.Value1 = MyValue; 
Entity.ChildEntityENT.Value2 = MyValue; 

,但我有我想要的工作基類與各種實體和ChildEntityENT類型。我最初的想法是按照這些方式做一些事情,但我似乎無法使其發揮作用。基本上,我打算讓開發人員使用lambda表達式從基本實體指向ChildEntityENT,然後我的方法將檢查ChildEntityEnt並實例化一個新的空白副本(如果尚不存在的話)。如果它確實存在,它不需要做任何事情。

public void CreateIfNull(Expression<Func<Entity, object>> Child) 
{ 
    if (Entity.Child == null) 
    { 
     ChildENT = new ChildENT(); 
     Entity.ChildENT = ChildENT; 
    } 
} 

如果我完全錯過了這一球上的球,請讓我知道。我想找到更簡單的方法來做事情。我希望LINQ在嘗試爲它分配值之前不需要手動創建一個新的ChildEntityENT。

編輯:實際上,我試圖做同樣的事情,因爲這傢伙:Adding a child entity to parent entityset

回答

0

我最終解決這個樣子。

public void CreateChildIfNull(LambdaExpression Child) 
    { 
     Type ChildType = Child.Body.Type; 
     var NewChild = Activator.CreateInstance(ChildType); 
     Entity.GetType().GetProperty(ChildType.Name).SetValue(Entity, NewChild, null); 
    } 
相關問題