【发布时间】:2012-07-23 13:10:35
【问题描述】:
我正在使用带有 EF Code First 的现有数据库并使用 modelBuilder 进行配置。我有两个表,其中一个会话可以有一个主题,类是这样的:
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"));
这首先失败,直到我从 SessionItem 类中删除了 Subject_ID,然后我收到错误:发生关系多重性约束违规:一个 EntityReference 不能有多个相关对象,但查询返回了多个相关对象。这是一个不可恢复的错误。
知道我哪里出错了吗?
【问题讨论】:
-
Subject_ID列在数据库中不是唯一的,或者为什么查询返回“多个相关对象”?你真的想要一对一的关系还是一对多的关系? -
它是独一无二的,基本上有一个主题列表,每个会话可以有一个主题。我的模型构建器代码可能完全错误,我是新手!
标签: asp.net-mvc entity-framework ef-code-first one-to-one