在 Entity Framework 核心上禁用 AutoDetectChanges

Disable AutoDetectChanges on Entity Framework Core

有人知道如何禁用 EFCore 上的 AutoDetectChanges 吗?

我需要这样做,因为我必须在我的数据库中进行大量导入,并且无法在网上找到信息。

试过这个但没用:

_context.Configuration.AutoDetectChangesEnabled = false;

说配置不存在。

非常感谢。

这是我熟悉的文档:

var blogs = context.Blogs
    .AsNoTracking()
    .ToList();

参考: https://docs.microsoft.com/en-us/ef/core/querying/tracking

我认为我以前的做法是在注册 DBContext 时将其关闭,这样就不必将其添加到每个查询中。

我想不起来了,没有代码 ex。现在参考所以我可能是错的

services.AddDbContext<YourDbContext>(options =>
{
    options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
});

编辑:找到了。 https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.dbcontextoptionsbuilder.usequerytrackingbehavior?view=efcore-3.1

很确定这就是您要找的东西

你试过的

_context.Configuration.AutoDetectChangesEnabled = false;

适用于 EF6。

对应的EF Core选项AutoDetectChangesEnabled is property of the ChangeTracker associated with the DbContext,所以对应的代码是

_context.ChangeTracker.AutoDetectChangesEnabled = false;