2011-04-12 56 views
1

EF4非常適合提取相關數據,但當關聯不明確時,您會做什麼?一個例子說明了我的情況:當沒有關聯存在時選擇相關實體

MasterTable有一個child1Id和child2Id列。

有兩個表Child1和Child2與相應的主鍵child1Id和child2Id。有Master,Child1和Child2實體。

Master和Child1/Child2表或實體之間沒有外鍵或實體框架關聯。

當我擁有的是主匹配的子ID時,如何從兩個子表中選擇主記錄和相應的子記錄?

我無法翻新關係或關聯。

Richard

回答

0

您必須通過linq手動選擇它們到實體。這裏是如何做兩個表之間的左連接:

var query = from m in context.Masters 
      where m.Id == 1 
      join c in context.Childs on m.Child.Id equals c.Id into leftJoin 
      from x in leftJoin.DefaultIfEmpty() 
      select new 
       { 
        Id = x.Id, 
        Name = x.Name, 
        Child = x.Childs 
       }; 

Btw。如果您的實體擁有包含來自其他實體的PK值的財產,您可以在EF designer中創建關係。在這種情況下,您將能夠使用導航屬性。

+0

我有類似的情況..父母與子女在EF/DB中沒有明確的關聯。所以我在Parent.partial.cs類文件中添加了一個Child屬性。有沒有一種方法可以使用查詢選擇器 - 但是'選擇m'因此EF實現了主對象 - 然後以某種方式將.Child屬性全部在內部填充,這樣EF實際上會生成一個返回子對象並同時實現它們的連接? (基本上,即時聯繫) – JoeBrockhaus 2013-05-01 21:50:57

+0

..目前我必須做一些類似於選擇新的(Parent = parents,Children = children} ..但這意味着我必須花費更多的週期將其填充到Parent:var results = q中。選擇(x => {var p = x.Parent; p.Children = x.Children; return p;}); (我有一個S/O問題http://j.mp/10tivJy) – JoeBrockhaus 2013-05-01 21:51:25

相關問題