2009-05-27 91 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