假设我在DB中有3个表用于多对多关系:
TabA(id1,...):主键:id1
TabB(id2,...):主键:id2
TabAB(Id1,id2,..):外键:id1,id2
因此,当从DB创建带有VS 2010的edmx时,我只在模型中获得两个实体TabA和TabB,因为TabAB没有主键。
如何使用EF处理此案例?
答案 0 :(得分:1)
你确定EF不只是将TabAB变成了一种关系吗?如果没有其他列,它将不会显示为模型中的表。 EF确定TabAB是一个连接表,并相应地对其进行处理。
如果没有,最好的方法是将TabAB改为拥有id1
和id2
的复合主键。如果某些原因导致值的组合不是唯一的,那么检查原因可能是好的。
答案 1 :(得分:0)
常见的方法是在EF中处理多对多关系 - 在存储中有三个表,在概念模型中只有两个表。存储中的第三个表包含表示引用主表的外键的列,并且中间表的主键是在这些引用列上构建的。设计师只是隐藏它:)
在此处阅读更多内容 - http://weblogs.asp.net/zeeshanhirani/archive/2008/08/21/many-to-many-mappings-in-entity-framework.aspx。