2010-11-23 9 views
0

エンティティのサブテーブルを更新できるメソッドを作成しようとしています。私の理解では、新たなエンティティのために、私はこのような子供たちを追加することです:LINQ:エンティティにサブテーブルをまだ作成していない場合は作成する

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

そしてから、私はこのようにアクセスすることができます上:

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

しかし、私は、私が仕事をしたい基本クラスを持っていますさまざまなEntityおよびChildEntityENT型があります。私の最初の考えは、これらの行に沿って何かをすることでしたが、私はそれを動作させるように見えることはできません。基本的には、開発者にベースエンティティから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); 
    } 
関連する問題