EF DbContext反向更改(仅一列)

时间:2018-12-28 08:12:17

标签: c# entity-framework entity-framework-6 ef-code-first

我正在使用此代码还原上下文中的更改。我的问题是,如何恢复除一种特定类型之外的所有更改,在该特定类型中,我想保留一列的值。

public void RollBack()
{
    var context = DataContextFactory.GetDataContext();
    var changedEntries = context.ChangeTracker.Entries()
        .Where(x => x.State != EntityState.Unchanged).ToList();

    foreach (var entry in changedEntries)
    {
        switch(entry.State)
        {
            case EntityState.Modified:
                entry.CurrentValues.SetValues(entry.OriginalValues);
                entry.State = EntityState.Unchanged;
                break;

            case EntityState.Added:
                entry.State = EntityState.Detached;
                break;

            case EntityState.Deleted:
                entry.State = EntityState.Unchanged;
                break;
        }
    }
}

例如,如果我有类型为StudentSchool等的实体,并且我对其他实体进行了更改,并更改了Status上名为Student的属性,则我想撤消所做的所有更改,但我想将Status实体的Student值保存/持久保存到数据库中,该怎么办?

0 个答案:

没有答案