【问题标题】:EntityFrameworkCore 2.1.0 loads all related data by default without using IncludeEntityFrameworkCore 2.1.0 默认加载所有相关数据,不使用 Include
【发布时间】:2018-06-30 12:33:14
【问题描述】:

我的EntityFrameworkCore有问题,它默认加载所有相关数据。

这个问题不用贴代码,不用也很容易解释。

我有一个具有用户导航属性的 Post 类。问题是,每次我尝试加载 Post 时,User 都会随之加载,但我不希望这样。我没有使用延迟加载。我认为默认情况下,延迟加载不包含在 EF Core 中,您需要为其引用一个特殊的包,对吗?嗯,我没有。

即使在最简单的查询中也会发生这种情况,例如以下查询:

db.Posts.ToList();

然后,当我尝试序列化这些帖子时,我遇到了引用循环处理问题,因为用户再次拥有帖子导航属性。

我没有在 DbContext 或 Post 类中配置任何与数据库相关的内容。

我正在使用 SQL Server 作为数据库,以及 2.1.0 提供程序版本。

【问题讨论】:

  • 您所描述的内容不会正常发生,这让我认为您有一些代码可以在您的数据库上下文中加载用户。你能证明db 是干净的吗,例如var db = new YourDbContext(); var posts = db.Posts.ToList(); 并且仍然得到 Post.User 属性填充?
  • 序列化时上下文是否仍然打开?当序列化程序尝试访问属性时,可能延迟加载正在填充导航属性。
  • @DevilSuichiro 不,与 EF6 不同,EF-core 默认没有延迟加载。正如 OP 所说,您需要采取一些深思熟虑的步骤来启用它。我认为上下文生命周期不是应该的。斯卡拉斯,通过不显示代码,你不可避免地只会分享你知道的东西,而不是你没有意识到时发挥作用的东西。

标签: c# asp.net .net entity-framework entity-framework-core


【解决方案1】:

我不知道为什么,但现在我发现问题在于我的 DbContext 被注册为单例。

感谢@IvanStoev

【讨论】:

    猜你喜欢
    • 2018-11-07
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    相关资源
    最近更新 更多