调试应用程序启动时检测到神秘的EF Core问题:调用了上下文中的每个DbSet
属性获取器(根据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的工作方式。希望对发现和解决问题有任何帮助。
环境: