将单个映射表用于多个多对多关系

时间:2016-02-15 05:10:58

标签: c# sql .net entity-framework

我需要在单个表中存储多个多对多关系,以便与EntityFramework一起使用。

此要求中有许多m2m关系,但要举例说明,有:

实体 EntityGroup 地址

每个实体可以链接到多个地址记录,每个实体可以链接到多个EntityGroup记录。我想使用单个表来管理这些对象之间的关系 - 例如:

RelationshipType    LeftID    RightID
EntityGroupEntity   1         74
EntityGroupENtity   1         83
EntityAddress       74        17

在上面的示例中,EntityGroup" 1"包含ID为" 74"的两个实体。和" 83"和实体" 74"有地址" 17"与之相关联。

我注意到Fluent API中有Mapping选项,使用MapLeft和MapRight,但似乎没有办法告诉它在访问列表时要查找哪个关系。这可能吗?我没有幸运地在网上找到我的问题的答案 - 可能是因为我没有正确地问它!

任何帮助都将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

您只能在包含多个m2m关系,枚举类型的表中再添加一列,指示它是EntityGroup还是您要引用的Address。

RelationshipType    LeftID    RightID  Type
EntityGroupEntity   1         74        1
EntityGroupENtity   1         83        1
EntityAddress       74        17        2

其余的创意工作取决于您。无论如何,这是不好的做法(但据我所知,你无法控制要求)。