SaveChanges没有AcceptChanges

时间:2017-01-16 10:22:01

标签: c# entity-framework

SaveChanges中的呼叫方法DbContext将使用默认保存选项SaveChanges呼叫ObjectContext中的SaveOptions.AcceptAllChangesAfterSave

因此,所有更改都将在保存后进行。

我想在手动模式下控制它:

  1. 检测更改
  2. 保存更改
  3. 接受更改
  4. 现在,2和3在一个操作中联合起来,所以我不能在2到3之间做一些操作。我怎么能分开呢?

1 个答案:

答案 0 :(得分:2)

基于Ivan Stoev的评论:

internal sealed class TestContext : DbContext
{
    protected ObjectContext ObjectContext => ((IObjectContextAdapter)this).ObjectContext;

    public override int SaveChanges()
    {
        //detect all changes in context
        ChangeTracker.DetectChanges();

        //write changes to database
        var result = ObjectContext.SaveChanges(System.Data.Entity.Core.Objects.SaveOptions.None);

        //do some actions with entities
        DoStuff();

        //accept all changes in entities
        ObjectContext.AcceptAllChanges();

        return result;
    }