Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 等同于LINQ到实体的DataLoadOptions?_C#_Linq_Entity Framework_Linq To Entities - Fatal编程技术网

C# 等同于LINQ到实体的DataLoadOptions?

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

对于LINQ to实体,LINQ to SQL中是否存在一个版本的
DataLoadOptions
类?基本上,我希望有一个存储所有急切加载配置的地方,而不必添加
.Include()
调用到我的所有LINQ to Entities查询。或者,如果有人有更好的解决方案,肯定也会这样做

TIA,

Benjy

实体框架不支持整个“ObjectContext”的即时加载设置。但您可以在分部类中使用include选项声明所有必需的“IQueryable”属性。例如:

public IQueryable<Order> Orders {
  get {
    return OrderSet.Include("OrderDetails");
  }
}
公共可查询订单{
得到{
返回订单集。包括(“订单详细信息”);
}
}

就个人而言,我很高兴没有(官方)EF等效于
DataLoadOptions
。为什么?有几个原因:

  • 以抛出异常的方式使用它们太容易了,请参阅的备注部分
  • 我不喜欢过滤子集合的概念。当
    客户
    拥有
    订单
    时,我希望
    订单
    成员代表该客户的订单(不管是否懒惰)。在其他地方定义的筛选器(由与关联的
    定义)很容易被忘记。我会在需要的时候和地方过滤它们。这导致了最后一个反对意见:
  • 最重要的是:它是有状态的,大多数bug是由意外状态引起的
    DataLoadOptions
    以影响后续查询的方式更改
    DataContext
    的状态。我更喜欢定义在何时何地需要它。打字很便宜,bug很贵
然而,为了完整起见,我应该提到,穆罕默德·莫萨确实在这方面做了一些努力。但我从未试过


我意识到您可能想要防止重复代码。但如果您在多个地方需要相同形状的查询,那么您已经在重复代码,无论是否定义了“全局”包含。一种中央急加载配置是伪干燥。很快你就会发现,当你不想迫不及待地加载时,你会被自己绊倒,但是,该死的,这已经被配置好了

对任何在谷歌上看到这一点的人来说:这也是非常有帮助的