2014-02-06 110 views
0

我要取一個對象像這樣如何使用查找獲取對象同時還包含另一個對象?

var fetchedObject = ds.Products.Find(id); 

但我還需要添加一個包括(),因爲產品包含一個供應商的對象。我得到的代碼就像

var fetchedObject = ds.Products.Include(「Supplier」).SingleOrDefault(i => i.Id == id); 

我將如何將二者結合起來,所以我找到(ID),同時還包括(「供應商」)?

回答

0

我不明白你的問題是什麼?您的第二行代碼是「查找」具有該ID的對象,還包括供應商。我想你可能會誤解Include包含的內容。包括意味着它只會讓一個往返到數據庫,並檢索與它一起的導航屬性「供應商」,因此,這可以在下一行通過做一些事情來查詢:

var supplier = fetchedObject.Supplier; 

或任何你想要的與它做。你有沒有試過運行你的第二條線?

如果您沒有在其中編寫include子句,那麼將會延遲評估fetched對象的供應商。這意味着如果您決定使用供應商,它將不得不再次訪問數據庫。

+0

所以我的問題是我想查找(ID)以及包括(供應商)。你是說第二行代碼(爲我提供)執行這兩件事情嗎? – user2981393

+0

是的從你的描述你想要它做什麼我認爲第二行做你想要的。 – TylerD87

+0

好的,謝謝你讓我知道!我不知道 – user2981393

0

你不能。 Find會執行一些與Include之類的事件相沖突的優化。也就是說,find將始終從本地存儲中返回對象,而不會發出查詢,如果它已經從數據庫中提取。

相關問題