首页 > 解决方案 > 由于某种神秘的原因,所有实体都在启动时被检索

问题描述

在调试应用程序启动时检测到神秘的 EF Core 问题:DbSet正在调用上下文中的每个属性 getter(按DbSet属性名称的字母顺序),并且正在实例化数据库中的每个行/实体!

DbContext配置:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseSqlServer(Startup.Configuration.GetConnectionString("DefaultConnection"));
    optionsBuilder.EnableSensitiveDataLogging();
    base.OnConfiguring(optionsBuilder);
}

服务配置:

    services.AddDbContext<ProjectDbContext>();

我尝试通过添加来解决问题

optionsBuilder.UseLazyLoadingProxies();

DbContext配置,但事实证明它需要我将每个导航属性标记为virtual,并且我得到了大量的导航属性。我什至为自己制作了一个 WinForms 工具,可以将virtual修饰符添加到导航属性中 - 但使用代理会导致我的项目中出现其他问题

尽管如此,无论我是否使用延迟加载代理,我相信这一定不是 Entityframework 的工作方式。期待任何帮助来识别和解决问题。

环境:

标签: c#entity-frameworkasp.net-core.net-coreentity-framework-core

解决方案


推荐阅读