我可以定义每个数据上下文而不是每个查询的热切加载吗

本文关键字:加载 查询 数据 定义 上下文 我可以 | 更新日期: 2023-09-27 17:57:53

有没有一种方法可以定义每个数据上下文的热切加载,这样我就可以这样说——"在加载Customer时使用此数据上下文时,也总是加载关联的City"?

因此,与Linq到Sql中的Options和LoadWith非常相似。

我可以定义每个数据上下文而不是每个查询的热切加载吗

没有实体框架不提供Linq到Sql中可用的等效DataLoadOptions。没有办法全局定义类似LoadWithAssociateWith的东西。

正如Ladislav所说,目前在EF中没有办法做到这一点。然而,问题又回到了为什么要在全局范围内而不是在每个查询的基础上进行此操作。

如果你的主要目的是从你的业务层中抽象出渴望的负载,那么一个选择就是做一些我在这里写的博客文章中描述的事情。从本质上讲,它描述了我想要创建的一个库(时间允许),在这个库中,它通过查看查询应该基于的数据结构来自动确定如何急于加载。

然而,我不知道这是否能解决你试图做什么的核心问题,如果没有更多关于你为什么想要这个全局

的细节

您可以在DataContext:的构造函数中定义数据加载选项

public MyDataContext() : 
  base(global::System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString, mappingSource)
{
    DataLoadOptions options = new DataLoadOptions();
    options.LoadWith<Customer>(o => o.City);
    this.LoadOptions = options;
    OnCreated();
}

这样每次都会急切地加载属性。