親クラスがデータベース生成識別子を使用していない場合、子オブジェクトに外部キーが自動的に設定されるようにEntity Frameworkを設定する方法を教えてください。子の外部キーを自動的に設定するようにEFを設定する方法
例モデル:
public class Parent
{
[Key]
public string Name { get; set; }
public virtual List<Child> Children { get; set; }
}
public class Child
{
[Key]
[Column(Order = 1)]
public string ParentName { get; set; }
[Key]
[Column(Order = 2)]
public string ChildName { get; set; }
}
例シード方法:
context.Parents.AddOrUpdate(p => p.Name,
new Parent
{
Name = "Test",
Children = new List<Child>
{
new Child {ParentName = "Test", ChildName = "TestChild"},
new Child {ParentName = "Test", ChildName = "NewChild"}
}
});
は私が手動でそれぞれの新しい子供のためParentName =「テスト」を設定する必要がないようにEFを設定することは可能です子供のリストに?
編集 - ここで生成された移行
CreateTable(
"dbo.Parents",
c => new
{
Name = c.String(nullable: false, maxLength: 128),
})
.PrimaryKey(t => t.Name);
CreateTable(
"dbo.Children",
c => new
{
ParentName = c.String(nullable: false, maxLength: 128),
ChildName = c.String(nullable: false, maxLength: 128),
})
.PrimaryKey(t => new {t.ParentName, t.ChildName})
.ForeignKey("dbo.Parents", t => t.ParentName, cascadeDelete: true)
.Index(t => t.ParentName);
なぜFKとして関係を設定できませんか? – Sampath
@Sampath慣例により、FKが構成されています。私はそれが設定されていることを示すために移行を追加しました。私は、親の子供リストにアイテムを追加するときに、FKのParentNameが自動的にEFによって設定されるかどうかを疑問に思っています。 – DeadlyGhost1
Related、possible duplicate:[エンティティフレームワークの自動外部キー人口](http://stackoverflow.com/questions/33904871/entity-framework-automatic-foreign-key-population) – stuartd