我正在尝试使用流畅的API将现有数据库映射到POCO类。一切都很好,一对多和多对多的关系,但一对一的失败与我尝试的gazillions选项。
sql表很简单,Agent
为AgentID
为PK,AdditionalAgentInfo
为AdditionalAgentInfoID
为PK,列为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);
我的上下文加载但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")
,但我的重复列错误。
我错过了什么?
答案 0 :(得分:0)
这是因为EF仅支持共享PK一对一映射。 AdditionalAgentInfo
PK也应该是FK到Agent
表。否则,您必须将其映射为一对多关系,并忽略many
结束属性。