Entity framework EF4代码优先和现有数据库上的一对一,不带外键

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

我正在尝试使用fluentapi将现有的db映射到POCO类。在一对多和多对多的关系中,一切都很好,但在我尝试的无数选择中,一对一失败了

sql表很简单,
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 to
Agent
表。否则,您必须将其映射为一对多关系,并忽略
many
end属性

FROM [dbo].[AdditionalAgentInfo] AS [Extent1]
WHERE [Extent1].[AgentID] = @EntityKeyValue1