2012-01-19 66 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] 
相關問題