Я пытаюсь смоделировать следующий класс лиц, ссылающихся на себя, в 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" });
Я получаю эту ошибку:
В EntityFramework.dll возникло необработанное исключение типа «System.InvalidOperationException».
Дополнительная информация: последовательность не содержит совпадающих элементов.
Что означает эта ошибка и как ее исправить? Есть ли, при желании, лучший способ смоделировать этот объект (например, с использованием подкласса Мать:Человек и Отец:Человек)?