2013-03-09 62 views
-1

我有以下問題EF和LINQ2SQL使用兩個表聯繫從加入EF

表1:

Id | Name 
1 | Name1 
2 | Name2 

表2:

Id | Table1Id | Name 
1 | 1  | SomeText1 
2 | 1  | SomeText2 
3 | 2  | SomeText3 

我想創建一個linq2sql查詢獲得結果集與模板爲

Table1Id:contact(Table2.Name+";") 

例如

1:SomeText1;SomeText2 
2:SomeText3 

回答

0

有幾分鐘的空閒時間今天早上,請在下面找到一個樣本實現。除了指定要實現所需內容的表之外,還需要在兩個表(多對多)之間添加關聯。這將在連接表上運行並向兩個實體添加導航屬性。

下面的查詢基本上是說選擇表1條目幷包含來自Table2導航屬性的關聯記錄。對於這個例子,我在上下文中關閉了Lazy Loading(你應該幾乎所有的時候都會這樣做,因爲它會導致跨層的問題和/或在應用程序中序列化的時候)。

 // db first 
     using (var db = new SO15312066Entities()) 
     { 
      // iterate over table 1, with join values from 2 
      var query = db.Table1.Include("Table2"); 

      foreach (var item in query) 
      { 
       Console.WriteLine("{0}:{1}", item.Id, string.Join(";", item.Table2.Select(x => x.Name).ToList())); 
      } 
     } 

     //output 
     //1:SomeText1;SomeText2 
     //2:SomeText3 

此實現的假設是,這是EF數據庫第一(如您最初說你有在EF問題)。 SO15312066Entities是查詢的ObjectContext。

我沒有檢查它的執行情況,我將在實際執行中將其留給您。