.net core EntityFrameworkCore2.1错误地延迟加载了一些导航属性,但没有加载其他属性

.net core EntityFrameworkCore2.1错误地延迟加载了一些导航属性,但没有加载其他属性,.net-core,entity-framework-core,lazy-loading,eager-loading,.net Core,Entity Framework Core,Lazy Loading,Eager Loading,我试图通过确保只加载模型来解决Entity Framework Core 2.1项目的n+1问题 我遇到的问题是,一些相关的模型被延迟加载,而其他的则没有。要明确的是,我根本不希望任何延迟加载的东西,而且我还没有明确启用它。我不相信这是预期的行为 例如,当我在下面的代码中运行此代码时,它会按预期返回所有包含的数据 List<User> users = _context.Users .Include(u => u.Engine) .Include(u =>

我试图通过确保只加载模型来解决Entity Framework Core 2.1项目的n+1问题

我遇到的问题是,一些相关的模型被延迟加载,而其他的则没有。要明确的是,我根本不希望任何延迟加载的东西,而且我还没有明确启用它。我不相信这是预期的行为

例如,当我在下面的代码中运行此代码时,它会按预期返回所有包含的数据

List<User> users = _context.Users
    .Include(u => u.Engine)
    .Include(u => u.ClientType)
    .Include(u => u.Organization)
    .Include(u => u.Role)
    .ToList();
列出用户=\u context.users
.包括(u=>u.发动机)
.Include(u=>u.ClientType)
.包括(u=>u.组织)
.包括(u=>u.Role)
.ToList();
但是,如果我删除了所有的包含项,列表中大约90%的用户仍然会包含它的关联数据。我相信这就是为什么我会遇到n+1问题,尽管使用了渴望加载


为什么只有一些关联的模型被延迟加载?为什么在我没有启用的情况下,任何东西都可以延迟加载?这可能是我的n+1问题的根本原因吗?尽管我努力只使用即时加载?

默认情况下,EF Core不启用延迟加载。您必须明确选择它,然后将导航属性标记为
virtual
。如果不希望延迟加载,请确保您的
OnConfiguring
方法没有调用
UseLazyLoadingProxies()

protectedoverride void onconfiguration(DbContextOptionsBuilder optionsBuilder)
=>选项生成器
//.UseLazyLoadingProxies()
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder
    // .UseLazyLoadingProxies() <- Only use this to enable lazy loading.
    .UseSqlServer(myConnectionString);