我可以在 EF Core 中有选择地禁用/启用延迟加载吗?

问题描述 投票:0回答:1

在 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 中单个属性的延迟加载吗?

c# .net entity-framework-core lazy-loading
1个回答
0
投票

你可以试试看这篇文章:

https://learn.microsoft.com/en-us/ef/core/querying/related-data/lazy

没有代理的延迟加载

好像可以用 ILazyLoader 定义特定的属性

© www.soinside.com 2019 - 2024. All rights reserved.