Опитвам се да моделирам следния саморефериращ клас на човек в 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" });
Получавам тази грешка:
Възникна необработено изключение от тип „System.InvalidOperationException“ в EntityFramework.dll
Допълнителна информация: Последователността не съдържа съответстващ елемент
Какво означава тази грешка и как да я коригирам? По избор, има ли по-добър начин за моделиране на този обект (напр.: използване на подклас на Mother:Person и Father:Person)?