2012-01-19 159 views
1

假设我有MSSQL表A,AB和B,其中AB是一个简单的ManyToMany映射表,它包含两列:A的主键和B的主键。实体框架不会为AB生成类,只会收集B在A中,A在B中。有时我想列出AB的内容。我可以让Entity Framework为我的多对多关系表创建代码吗?

有没有什么办法可以让EF生成AB ManyToMany表的代码?

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

回答

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查询被翻译成一个非常简单的SQL查询,而不是任何连接:

SELECT 
[Extent1].[AId] AS [AId], 
[Extent1].[BId] AS [BId] 
FROM [dbo].[ABs] AS [Extent1] 
相关问题