我試圖在EF6中爲以下自引用人類建模。如何使用實體框架正確建模自引用多父項關係
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public int? MotherId { get; set; }
public Person Mother { get; set; }
public int? FatherId { get; set; }
public Person Father { get; set; }
public virtual ICollection<Person> Children { get; set; }
}
而且我的DbContext是這樣的:
public virtual DbSet<Person> People { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>()
.HasOptional(m => m.Mother)
.WithMany(c => c.Children)
.HasForeignKey(m => m.MotherId);
modelBuilder.Entity<Person>()
.HasOptional(f => f.Father)
.WithMany(c => c.Children)
.HasForeignKey(f => f.FatherId);
}
當嘗試使用下面的代碼的人添加到數據庫:
db.People.Add(new Person { Name = "Jane Doe" });
我得到這個錯誤:
An unhandled exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll
Additional information: Sequence contains no matching element
這個錯誤是什麼意思,我該如何糾正?另外,有沒有更好的方法來建模這個對象(例如:使用母親的子類:人和父:人)?
你如何指定FK? – Ewan
您不需要 - 默認情況下,EF使用相關實體的PK,按照慣例,這是名爲ID或ClassNameID的道具。 –