C# 拒绝更改后的实体框架核心dbContext行为

C# 拒绝更改后的实体框架核心dbContext行为,c#,entity-framework,core,dbcontext,C#,Entity Framework,Core,Dbcontext,我有一个带有实体框架的C#核心API项目。 在其中一个API中,有一种特殊情况,我需要中止在db上下文中所做的更改,然后在数据库中保存其他不同的数据 我找到并编辑了一些代码来实现这一点: public void RejectChanges() { var ChangeTracker = new Microsoft.EntityFrameworkCore.ChangeTracking.ChangeTracker(_context); foreach (var entry in Ch

我有一个带有实体框架的C#核心API项目。 在其中一个API中,有一种特殊情况,我需要中止在db上下文中所做的更改,然后在数据库中保存其他不同的数据

我找到并编辑了一些代码来实现这一点:

public void RejectChanges()
{
    var ChangeTracker = new Microsoft.EntityFrameworkCore.ChangeTracking.ChangeTracker(_context);
    foreach (var entry in ChangeTracker.Entries())
    {
        switch (entry.State)
        {
            case EntityState.Modified:
            case EntityState.Deleted:
                entry.State = EntityState.Modified; //Revert changes made to deleted entity.
                entry.State = EntityState.Unchanged;
                break;
            case EntityState.Added:
                entry.State = EntityState.Detached;
                break;
        }
    }
}
这似乎是可行的,但我有一个很大的疑问:如果另一个API要保存它自己的数据,这个操作是否也会影响它的数据,同时拒绝这些更改?或者,如我所愿,if是否只影响调用此方法的API会话


示例:API 1在上下文中编辑一些数据,然后调用RejectChanges方法。同时,API 2编辑其他数据并将保存。从API 1调用的RejectChanges是否也拒绝API 2所做的编辑?

更改跟踪器的作用域为单个DbContext,其作用域应为单个API请求。此外,您也不会创建新的ChangeTracker。DbContext已经有一个

var ChangeTracker = _context.ChangeTracker;
同时更改条目。状态不会“还原”任何更改。它只是更改EF将对SaveChanges()执行的操作