对于LINQ to Entities,LINQ to SQL中是否存在DataLoadOptions
类的版本?基本上我想有一个存储所有急切加载配置的地方,而不必为我的所有LINQ to Entities查询添加.Include()
调用。或者,如果有人有一个更好的解决方案,那么肯定也会对此开放。
TIA,
本吉
答案 0 :(得分:5)
实体框架不支持整个“ObjectContext”的预先加载设置。但是您可以使用部分类中的include选项声明所有必需的'IQueryable'属性。例如:
public IQueryable<Order> Orders {
get {
return OrderSet.Include("OrderDetails");
}
}
答案 1 :(得分:5)
就我个人而言,我很高兴没有(官方)EF等效DataLoadOptions
。为什么?原因如下:
Customer
有Orders
,我希望Orders
成员代表该客户的订单(懒惰与否)。其他地方(AssociateWith
)定义的过滤器很容易被遗忘。我会在需要的时间和地点过滤它们。这导致了最后的反对意见:DataLoadOptions
以稍后查询受影响的方式更改DataContext
的状态。我更喜欢在需要的地方和时间定义急切加载。打字很便宜,错误很贵。然而,为了完整起见,我应该提到穆罕默德·莫萨确实在EF version of DataLoadOptions做了一些努力。我从来没有尝试过。
我意识到你可能想要防止重复的代码。但是,如果您在多个地方需要形状相同的查询,那么您已经在重复代码,无论是否包含“全局”定义。中央急切加载配置是伪DRY-ness。很快你会发现自己在需要急切加载时绊倒自己的脚,但是,它已经配置好了!