我在Agents和AgentGroups之间有多对多的关系(psuedocode,缩写)。
public class Agent {
public virtual List<AgentGroup> AgentGroups { get; set; }
}
public class AgentGroup {
public virtual List<Agent> Agents { get; set; }
}
在代码中的某个时刻,我想获取所有AgentGroup,并且我想为每个组预取/包含代理。我还想要在代理上预先填写AgentGroups集合。这适用于EF 6测试版,但不再适用于EF 6 rc1:
List<AgentGroup> allGroups = context.AgentGroups.Include("Agents").Include("Agents.AgentGroups").ToList();
我收到的错误消息是
无效的对象名称'dbo.AgentAgentGroups'。
事实上,没有表格AgentAgentGroups
,表格为dbo.AgentGroupAgents
。关于让它再次发挥作用的任何想法?
我目前没有注释,并且没有使用流畅的API,所有这些都是默认代码优先约定。
答案 0 :(得分:6)
在rc1中,多对多关联中联结表的命名约定似乎发生了变化。当我在各种EF版本中尝试你的模型时,我就是这样看的:
AgentGroupAgents
AgentGroupAgents
AgentAgentGroups
如果测试版不同,那也不错,但是rc1与上一个RTM版本不同,这使得这个版本发生了重大变化。好抓!
修改强>
您好,
在EF6之前,某些模型创建领域是非确定性的 - 取决于您是在x86还是x64上运行,您可以获得不同的模型。多个连接表名称是其中一个区域。 在EF6中,我们解决了这个问题,以确保结果始终如一。不幸的是,这确实意味着对于某些模型(取决于它们运行的架构),升级到EF6会导致模型更改。但是现在计算的模型将在机器和EF的未来版本之间保持一致。 如果您想继续使用原始名称,最好的选择是use the Fluent API to specify the join table name 〜罗文