当我从 DBContext
获取数据时,如何在 EF Core 5 中关闭加载导航属性?
我尝试添加:
public DataContext(DbContextOptions<DataContext> options)
: base(options)
{
this.ChangeTracker.LazyLoadingEnabled = false;
}
但导航属性仍会加载。
编辑:我添加到 AddDBContext
选项
UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
看起来这可行。
希望它不会破坏其他任何东西?
编辑2 UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
- 好吧,这不是我需要的......
我得到的数据如下:
List<Data> dataList = await _dataContext.Data.Where(w => idMeters.Contains(w.IdMeter.Value)).ToListAsync();
结果我有带有 IdMeterNavigation 的 Data 对象,并且 IdMeterNavigation 有另一个 NavigationProperties... 我不想加载任何 NavigationProperties 我该如何做到这一点?
我什至删除了virtual
来自类字段,并且它们仍然被加载。
最佳答案
EF 的默认行为是不加载相关实体。 为了加载相关实体,您可以使用:
- 急切加载
- 显式加载
- 选择加载
- 延迟加载
所以,对我来说,您似乎启用延迟加载,或者您实际上使用“选择”LINQ扩展或某种自动映射器软件进行SELECT加载。
检查您是否确实没有启用延迟加载... https://learn.microsoft.com/en-us/ef/core/querying/related-data/lazy
关于c# - Entity Framework Core 5 关闭加载NavigationProperties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68111640/