在 Entity Framework 中,显然可以为单个属性禁用延迟加载:
要关闭特定属性的延迟加载,请不要将其设为虚拟。
但是在 EF Core 中我得到这个异常:
InvalidOperationException:属性“DBO.Property”不是虚拟的。 “UseChangeTrackingProxies”要求所有实体类型都是公共的、未密封的、具有虚拟属性,并且具有公共或受保护的构造函数。 'UseLazyLoadingProxies' 只要求导航属性是虚拟的。
(在我的 DbContext 派生构造函数中设置
ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTrackingWithIdentityResolution
时抛出。)
我正在使用此错误中提到的第二种方法(使用 Microsoft.EntityFrameworkCore.Proxies 包):
// in my class derived from DbContext
protected override void OnConfiguring(DbContextOptionsBuilder builder)
{
builder.UseLazyLoadingProxies(true);
}
我可以关闭 EF Core 中单个属性的延迟加载吗?
你可以试试看这篇文章:
https://learn.microsoft.com/en-us/ef/core/querying/related-data/lazy
没有代理的延迟加载
好像可以用 ILazyLoader 定义特定的属性