ben*_*njy 5 c# linq linq-to-entities entity-framework
DataLoadOptionsLINQ to Entities的LINQ to SQL中是否存在该类的版本?基本上我想有一个存储所有急切加载配置的地方,而不必添加.Include()对所有LINQ to Entities查询的调用.或者如果有人有一个更好的解决方案,那么肯定也会对此开放.
TIA,
Benjy
小智 5
实体框架不支持整个'ObjectContext'的预先加载设置.但是您可以使用部分类中的include选项声明所有必需的'IQueryable'属性.例如:
public IQueryable<Order> Orders {
get {
return OrderSet.Include("OrderDetails");
}
}
Run Code Online (Sandbox Code Playgroud)
就个人而言,我很高兴没有(官方)EF相当于DataLoadOptions.为什么?原因如下:
Customer有Orders,我希望Orders会员代表该客户的订单(懒惰或不懒).在别处(by AssociateWith)定义的过滤器很容易被遗忘.我会在需要的时间和地点过滤它们.这导致了最后的反对意见:DataLoadOptions更改DataContext状态.我更喜欢在需要的地方和时间定义急切加载.打字很便宜,错误很贵.尽管如此,为了完整起见,我应该提到Muhammad Mosa确实在EF版本的DataLoadOptions中付出了一些努力.我从来没有尝试过.
我意识到你可能想要防止重复的代码.但是,如果您需要在多个地方使用形状相同的查询,那么您已经在重复代码,无论是否包含"全局"定义.中央急切加载配置是伪DRY-ness.很快你会发现自己在需要急切加载时绊倒自己的脚,但是,它已经配置好了!