【问题标题】:DbContext detect lazy loadingDbContext 检测延迟加载
【发布时间】:2019-03-11 11:05:52
【问题描述】:

我想将我的实体框架代码移至 .net 标准 2.0,但我注意到不支持延迟加载。

是否有办法检测何时在 DbContext 中使用延迟加载。这样我就可以在迁移到 .net 标准之前修复这些调用。

谢谢

史蒂夫

【问题讨论】:

  • Entity Framework Core 是否支持延迟加载,您正在阅读非常古老的文章。不过老实说,我从不推荐使用它
  • 95% 以上的代码使用了急切加载,但我不知道我的代码中是否存在无意中使用延迟加载的奇怪区域。所以我还是想删除所有延迟加载的代码。有没有办法检测 DbContext 何时使用延迟加载。
  • @Camilo Terevinto 能否请您详细说明为什么不建议使用延迟加载?就个人而言,我使用急切加载,但我一直在考虑切换到延迟加载。
  • @PaoloGo 因为幕后的“魔法”。您希望框架在正确的时间以有效的方式加载正确的实体。您还需要执行多个请求而不是一个请求,就像您还需要保持连接打开更长时间一样。这对我来说太神奇了

标签: c# entity-framework-core lazy-loading


【解决方案1】:

我假设你使用的是 EF 6,因为你没有提到 EF Core。

public class BloggingContext : DbContext
{
    public BloggingContext()
    {
        this.Configuration.LazyLoadingEnabled = false;
    }
}

以上将禁用您的上下文的延迟加载。这可能是一个前进的方向。我不建议将其放置到位并进行部署。我建议将其放在适当的位置并进行测试。

除此之外,检查上下文实体上的任何“虚拟”成员可能会有所帮助。

问题评论和否决票应该确实表明这不是检查您是否使用延迟加载的标准方法。在我看来,唯一可靠的方法是检查你的所有代码,如果上面没有帮助,请检查它。

另外,如前所述。从 2.1 开始,现在在 EF Core 中启用了延迟加载 https://docs.microsoft.com/en-us/ef/core/querying/related-data#lazy-loading

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多