1

我正在尝试使用流利的 API 将现有数据库映射到 POCO 类。在一对多和多对多的关系中一切都很好,但是在我尝试过的无数种选择中,一对一的失败了。

sql 表很简单,Agent带有AgentIDas PK 和AdditionalAgentInfoas AdditionalAgentInfoIDPK 和 column AgentIDAgent没有AdditionalAgentInfoID,但我在我的测试数据库中添加了这个,看看这是否会在没有运气的情况下解决它。

所有帖子都指出要做:

        pModelBuilder.Entity<Agent>()
              .HasOptional(u => u.AdditionalAgentInfo)
              .WithRequired(x => x.Agent);
        pModelBuilder.Entity<AdditionalAgentInfo>()
        .HasRequired(u => u.Agent)
        .WithOptional(x => x.AdditionalAgentInfo);

我的上下文加载但Agent.AdditionalAgentInfo始终为 NULL。查看分析器,sql 尝试加入错误的列:

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

它应该是 :

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

所以我尝试添加Map(x=>x.MapKey("AgentID")但我得到重复的列错误。

我错过了什么?

4

1 回答 1

0

这是因为 EF 仅支持共享 PK 一对一映射。AdditionalAgentInfoPK 也应该是 FK表Agent。否则,您必须将其映射为一对多关系并忽略manyend 属性。

于 2012-08-21T00:34:37.670 回答