Entity framework 4 如何处理EF中的N-N关系?

Entity framework 4 如何处理EF中的N-N关系?,entity-framework-4,Entity Framework 4,假设我在DB中有3个表用于多对多关系: TabA(id1,…):主键:id1 TabB(id2,…):主键:id2 TabAB(Id1,id2,…):外键:Id1,id2 因此,当使用VS2010从DB创建edmx时,我在模型中只得到两个实体TabA和TabB,因为TabAB没有主键 如何使用EF处理此案例?您确定EF没有将TabAB变成一种关系吗?如果没有其他列,它将不会在模型中显示为表。EF指出TabAB是一个联接表,并相应地处理它 如果不是,最好的方法是将TabAB修改为同时具有id1和i

假设我在DB中有3个表用于多对多关系:

TabA(id1,…):主键:id1

TabB(id2,…):主键:id2

TabAB(Id1,id2,…):外键:Id1,id2

因此,当使用VS2010从DB创建edmx时,我在模型中只得到两个实体TabA和TabB,因为TabAB没有主键


如何使用EF处理此案例?

您确定EF没有将TabAB变成一种关系吗?如果没有其他列,它将不会在模型中显示为表。EF指出TabAB是一个联接表,并相应地处理它


如果不是,最好的方法是将TabAB修改为同时具有
id1
id2
的复合主键。如果由于某种原因,值的组合是非唯一的,那么最好检查一下原因。

常用的方法是在EF中处理多对多关系-在存储中有三个表,在概念模型中只有两个表。存储器中的第三个表包含多个列,这些列表示引用主表的外键,中间表的主键构建在这些引用列之上。设计师只是隐藏了它:)


在这里阅读更多-。

正如您所猜测的,当我尝试它时,TabAB(id1,id2)没有其他列,它也没有出现在模型中。所以应该没问题,对吧?在这种情况下,TabA和TabB之间应该有关系,TabA和TabB的实体表示都有一个指向另一个表的“导航属性”。如果您正在VisualStudio中查看图表,请单击连接TabA和TabB的行,然后转到“映射详细信息”选项卡。如果您发现您有一个“映射到TabAB”的“关联”,并且显示了两个不同的主键,我认为您很好。