我可以获得Entity Framework来为我的多对多关系表创建代码吗?

时间:2012-01-19 13:43:16

标签: entity-framework

假设我有MSSQL表A,AB和B,其中AB是一个包含两列的简单ManyToMany映射表:A的主键和B的主键。实体框架不为AB生成类,只为集合生成A中的B和B中的A有时我想列出AB的内容。

有什么方法可以让EF为AB ManyToMany表生成代码吗?

PS我正在使用Rob Halletts Mocking Context Object Generator进行代码生成。不知道这是否相关。

1 个答案:

答案 0 :(得分:1)

不,你不能。连接表永远不会表示为模型中的实体。但是,如果没有该实体,您也可以列出AB联接表的内容:

var joinTableList = (from a in context.As
                     from b in a.Bs
                     select new
                     {
                         AId = a.Id,
                         BId = b.Id
                     })
                    .ToList();

您将获得匿名对象的列表。每个对象都有AIdBId作为属性。这个LINQ查询被转换为表AB上的一个非常简单的SQL查询,没有任何连接:

SELECT 
[Extent1].[AId] AS [AId], 
[Extent1].[BId] AS [BId]
FROM [dbo].[ABs] AS [Extent1]