Я использую существующую базу данных с EF Code First и использую modelBuilder для настройки. У меня есть две таблицы, в которых SESSION может иметь SUBJECT, классы как таковые:
public class SessionItem {
[Key]
public int SessionId { get;set; }
// Other Values
public int Subject_ID { get;set; }
public virtual Subject Subject { get;set; }
}
public class SubjectItem {
[Key]
public int Subject_ID { get;set; }
// Other Values
public virtual SessionItem Session { get;set; }
}
И тогда код modelBuilder:
modelBuilder.Entity<SessionItem>().ToTable("tblTblSessions");
modelBuilder.Entity<Subject>().ToTable("tblTblSubjects");
modelBuilder.Entity<SessionItem>()
.HasOptional<Subject>(u => u.Subject)
.WithOptionalDependent(c => c.Session).Map(p => p.MapKey("Subject_ID"));
Сначала это не удалось, пока я не удалил Subject_ID из класса SessionItem, затем я получил ошибку: Произошло нарушение ограничения множественности отношения: EntityReference может иметь не более одного связанного объекта, но запрос вернул более одного связанного объекта. Это неисправимая ошибка.
Есть идеи, где я ошибся?
Subject_ID
не уникален в базе данных или почему запрос возвращает более одного связанного объекта? Вы действительно хотите отношений один-к-одному или один-ко-многим? - person Slauma   schedule 23.07.2012