2010-05-28 166 views
1

我有什麼似乎是約1.0 EF一個簡單的問題,並一直在尋找所有網站上的一個簡單的答案,但有到目前爲止沒有運氣:許多在EF許多關係

我們即將以SQL Server作爲後端構建一個小型應用程序,並已考慮使用EF 1.0。與許多大公司一樣,我們的公司在採用新平臺方面並沒有很快採取行動,這意味着.NET 4.0將不會在機器上安裝很長一段時間,所以EF 4.0是不可能的。

這裏的問題(基於一個非常簡單的例子):

三個表中一個多對多的關係:

訂購:訂單(PK),客戶,訂購日期

訂單明細:OrderDetailID (PK),訂單ID(FK),產品ID(FK),數量,延期交貨

產品:產品ID(PK),產品名稱,類別

我們怎麼創造是有訂單信息和訂單明細名單包括產品名稱

這樣做的SQL是平凡的訂單情況,所以我不會與來煩你。在EF 1.0中獲取Order和OrderDetails列表也很容易。但是,當您獲取產品ID時,ProductID將識別產品,並且我們需要ProductName。我們看過this article。這是完成我們所需要的唯一方法嗎?好像工作的大量...

感謝所有幫助

+0

要插入一個訂單,其訂單明細,那些具有產品的每一個列表。我假設OrderDetails也是新的,因此也需要插入,但是該產品呢,它是一個現有的產品嗎? – 2010-05-28 14:38:37

+0

哼,我想不出你是否試圖在數據存儲中插入一個新的實體,或者選擇一個已經填充了導航屬性的實體。 – 2010-05-28 14:39:39

+0

對不起,我對這個問題不夠清楚。這是我正在尋找的選擇,我認爲它已被回答。 謝謝。 – 2010-05-28 15:05:52

回答

0

從你的描述推斷,如果一個選擇是你在找什麼,沿着這些線路的東西可以工作:

var query = from o in context.Order 
          .Include("OrderDetails") 
          .Include("OrderDetails.Product") 
      select o; 

你可以再通過導航屬性,如訪問信息:

// using first here just for exemple purpose. 
Order o = query.First(); 
var details = o.OrderDetails; 
var aProductName = o.OrderDetails.First().ProductName;