C# 等同于LINQ到实体的DataLoadOptions?
对于LINQ to实体,LINQ to SQL中是否存在一个版本的C# 等同于LINQ到实体的DataLoadOptions?,c#,linq,entity-framework,linq-to-entities,C#,Linq,Entity Framework,Linq To Entities,对于LINQ to实体,LINQ to SQL中是否存在一个版本的DataLoadOptions类?基本上,我希望有一个存储所有急切加载配置的地方,而不必添加.Include()调用到我的所有LINQ to Entities查询。或者,如果有人有更好的解决方案,肯定也会这样做 TIA, Benjy实体框架不支持整个“ObjectContext”的即时加载设置。但您可以在分部类中使用include选项声明所有必需的“IQueryable”属性。例如: public IQueryable<Or
DataLoadOptions
类?基本上,我希望有一个存储所有急切加载配置的地方,而不必添加.Include()
调用到我的所有LINQ to Entities查询。或者,如果有人有更好的解决方案,肯定也会这样做
TIA,Benjy实体框架不支持整个“ObjectContext”的即时加载设置。但您可以在分部类中使用include选项声明所有必需的“IQueryable”属性。例如:
public IQueryable<Order> Orders {
get {
return OrderSet.Include("OrderDetails");
}
}
公共可查询订单{
得到{
返回订单集。包括(“订单详细信息”);
}
}
就个人而言,我很高兴没有(官方)EF等效于DataLoadOptions
。为什么?有几个原因:
- 以抛出异常的方式使用它们太容易了,请参阅的备注部分
- 我不喜欢过滤子集合的概念。当
拥有客户
时,我希望订单
成员代表该客户的订单(不管是否懒惰)。在其他地方定义的筛选器(由与关联的订单
定义)很容易被忘记。我会在需要的时候和地方过滤它们。这导致了最后一个反对意见:
- 最重要的是:它是有状态的,大多数bug是由意外状态引起的
以影响后续查询的方式更改DataLoadOptions
的状态。我更喜欢定义在何时何地需要它。打字很便宜,bug很贵DataContext
我意识到您可能想要防止重复代码。但如果您在多个地方需要相同形状的查询,那么您已经在重复代码,无论是否定义了“全局”包含。一种中央急加载配置是伪干燥。很快你就会发现,当你不想迫不及待地加载时,你会被自己绊倒,但是,该死的,这已经被配置好了 对任何在谷歌上看到这一点的人来说:这也是非常有帮助的