0

次の 2 つのクラスがあるとします。

public class Parent
{
    public int ID { get; set; }
    public virtual ICollection<Child> Children { get; set; }
}

public class Child
{
    public int ID { get; set; }
    public int ParentID { get; set; }
    public virtual Parent Parent { get; set; }
}

次の方法でそれぞれを作成するとします。

//Create a parent with new children
public void CreateParent(MyDbContext context)
{
    context.Parents.Add(new Parent
    { 
         Children = new List<Child>() 
         { 
              new Child(),
              new Child(),
              new Child()                
         }
    });

    context.SaveChanges();
}

//Create a child with a new parent
public void CreateChild(MyDbContext context)
{
    context.Children.Add(new Child
    { 
         Parent = new Parent()
    });

    context.SaveChanges();
}

これらのメソッドのいずれかが、適切に割り当てられた外部キーを持つ親オブジェクトと子オブジェクトの両方を作成しますか? 私の直感は、CreateParent は機能するが、CreateChild は機能しないことを示しています。

ありがとうございました!

4

2 に答える 2

0

はい、これらのメソッドはどちらも、ParentID 外部キー セットを使用して、親レコードと子レコードを作成します。たとえば最初のものを実行すると、得られる結果は次のようになります。

ここに画像の説明を入力

また、別の回答では、ParentID は必要ないと述べていますが、Entity Framework はそれを親関連付けに使用される外部キーとして認識します。コードは機能しますが、遅延読み込みでこれらのプロパティを操作したくない場合は、それらが必要になります。

于 2014-05-21T21:10:08.273 に答える