2013-01-04 75 views
0

我想在EF5的LINQ中建立一個查詢。我的模型已經建立了兩個外鍵的關聯,shippingContacts與contactid和shippingcompanyid。這個「表」沒有智能感(它在mySQL中顯示爲表)我試圖以這種方式訪問​​數據無濟於事。 (我硬編碼的ID)多對多協會沒有intellisense

Dim testquery = (From s In ctx.shippingcompanies Where s.Id = 1 Join 
       c In ctx.contacts On s.Id Equals c.Id Select New With {c.LastName}).ToList() 

我真的需要訪問的關聯表,但是有它

回答

2

沒有智能感知關聯表中不可用EF默認。你只有ContactsShippingCompanies和他們每個人都包含導航屬性及其相關櫃檯一部分,所以你的查詢可以被定義爲(C#):你可以manually edit EDMX帶來ShippingCompanyContacts作爲一個新的實體,但它不是

var query = from s in ctx.shippingcompanies 
      where s.Id == 1 
      from c in s.contacts // accessing navigation property 
      select c.LastName; 

通常使用EF的方法。

+0

完美,謝謝 – dinotom

+0

你能解釋爲什麼s.contacts有效嗎?是不是變量形式的shippingcompanies表?它沒有現場聯繫人,爲什麼s.contacts工作? (順便說一下) – dinotom

+0

這就是EF背後的魔力。它將導航屬性轉換回數據庫中的關係,並與連接表和聯繫人表進行連接。 –