Cel*_*ste 5 c# entity-framework entity-framework-6
我在Agents和AgentGroups之间有多对多的关系(psuedocode,缩写).
public class Agent {
public virtual List<AgentGroup> AgentGroups { get; set; }
}
public class AgentGroup {
public virtual List<Agent> Agents { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在代码中的某个时刻,我想获取所有AgentGroup,并且我想为每个组预取/包含代理.我也想预先填补剂的AgentGroups集合.这适用于EF 6测试版,但不再适用于EF 6 rc1:
List<AgentGroup> allGroups = context.AgentGroups.Include("Agents").Include("Agents.AgentGroups").ToList();
Run Code Online (Sandbox Code Playgroud)
我得到的错误信息是
无效的对象名称'dbo.AgentAgentGroups'.
事实上,没有一张桌子AgentAgentGroups,桌子就是dbo.AgentGroupAgents.有关让这个再次起作用的想法吗?
我目前没有注释,我没有使用流畅的API,它严格地说是默认代码的第一个约定.
在rc1中,多对多关联中的联结表的命名约定似乎发生了变化.当我在各种EF版本中尝试您的模型时,这就是我所看到的:
AgentGroupAgentsAgentGroupAgentsAgentAgentGroups如果测试版不同,那也不错,但是rc1与上一个RTM版本不同,这使得这是一个突破性的变化.接得好!
编辑
您好,
在EF6之前,模型创建的某些区域是非确定性的 - 取决于您是在x86还是x64上运行,您可以获得不同的模型.多个连接表名称是其中一个区域.在EF6中,我们解决了这个问题,以确保结果始终如一.不幸的是,这确实意味着对于某些模型(取决于它们运行的架构),升级到EF6会导致模型更改.但是现在计算的模型将在机器和EF的未来版本之间保持一致.如果要继续使用原始名称,最佳选择是使用Fluent API指定连接表名称.
〜罗文