Entity framework EF4代码优先和现有数据库上的一对一,不带外键
我正在尝试使用fluentapi将现有的db映射到POCO类。在一对多和多对多的关系中,一切都很好,但在我尝试的无数选择中,一对一失败了 sql表很简单,Entity framework EF4代码优先和现有数据库上的一对一,不带外键,entity-framework,entity-framework-4.1,ef-code-first,one-to-one,Entity Framework,Entity Framework 4.1,Ef Code First,One To One,我正在尝试使用fluentapi将现有的db映射到POCO类。在一对多和多对多的关系中,一切都很好,但在我尝试的无数选择中,一对一失败了 sql表很简单,Agent以AgentID为主键,AdditionalAgentInfo以AdditionalAgentInfoID为主键,并有一列AgentIDAgent没有AdditionalAgentInfoID,但我在测试数据库中添加了它,以查看这是否能解决问题 所有帖子都指出要做: pModelBuilder.Entity<Ag
Agent
以AgentID
为主键,AdditionalAgentInfo
以AdditionalAgentInfoID
为主键,并有一列AgentID
Agent
没有AdditionalAgentInfoID
,但我在测试数据库中添加了它,以查看这是否能解决问题
所有帖子都指出要做:
pModelBuilder.Entity<Agent>()
.HasOptional(u => u.AdditionalAgentInfo)
.WithRequired(x => x.Agent);
pModelBuilder.Entity<AdditionalAgentInfo>()
.HasRequired(u => u.Agent)
.WithOptional(x => x.AdditionalAgentInfo);
应该是:
FROM [dbo].[AdditionalAgentInfo] AS [Extent1]
WHERE [Extent1].[AgentID] = @EntityKeyValue1
因此,我尝试添加Map(x=>x.MapKey(“AgentID”)
,但出现了重复列错误
我缺少什么?这是因为EF只支持共享PK一对一映射。
AdditionalAgentInfo
PK也应该是一个FK toAgent
表。否则,您必须将其映射为一对多关系,并忽略many
end属性
FROM [dbo].[AdditionalAgentInfo] AS [Extent1]
WHERE [Extent1].[AgentID] = @EntityKeyValue1