2009-05-27 71 views
2

我有一個名爲PropertyValues的表的數據庫,其中我存儲每個值,我需要描述我的數據庫錶行的一些屬性。實體框架和Linq實體和​​.Include()幾個表,或者

例如,它看起來像這樣Products表:

ID
的OrderID //產品表與Order表相關
產品名稱
ProductType_ID // ID描述產品類型(食品,香水,化學品)的PropertyValues表
ProductCountry_ID PropertyValues表// ID可鏈接到產品來自 ProductStatusID國家//也ID PropertyValues表,其中包含產品狀態(菱,不菱)

與這樣的數據庫模型,以獲得訂單和所有它的產品與他們的類型,國家和狀態我得寫這樣的事:

var orders = from o in dbEntities.Order.Include("Products.ProductType") 
             .Include("Products.ProductCountry") 
             .Include("Products.ProductStatus") 
      select o; 

和問題是:)
它可以自動完成(所有相關的實體將被包括在內)
或者也許有更好的方法?

謝謝!

回答

2

我想你要找的是「懶加載」或「急於加載」,正如亞歷克斯詹姆斯指出的那樣。

此博客文章解釋了「延遲加載」將在實體框架的4.0版本中實施。

http://blogs.msdn.com/adonet/archive/2009/05/12/sneak-preview-deferred-loading-in-entity-framework-4-0.aspx

它可以自動完成,谷歌「實體框架懶加載」到去設置它。

+3

只是要清楚'懶惰'或延期加載,是不一樣的急於加載。嚴格來說,要求的是什麼,但是我認爲你強調延遲加載是正確的,因爲它可能是真正需要的。急切的加載只做一個查詢。如果延遲加載提供了相關對象加載到一個查詢中的錯覺,那麼實際上它們不是。當相關對象被訪問時,EF靜靜地發出額外的查詢。 – 2009-05-28 16:23:44