2017-01-16 1 views
1

SaveChangesメソッドを呼び出すと、にSaveChangesが呼び出され、デフォルトの保存オプションSaveOptions.AcceptAllChangesAfterSaveが呼び出されます。AcceptChangesを持たないSaveChanges

したがって、すべての変更は保存後に反映されます。

私は、マニュアルモードで制御したい:保存の変更今

を受け入れ

  • を変更
  • を変更し、2と3は、1回の操作で団結している検出

    1. ので、私2と3の間でいくつかの操作を行うことはできません。どのように分割することができますか?イワンStoevさんのコメントに基づいて

  • +0

    。 ' – active92

    +0

    @ active92' DbContext'にはメソッドがありません。 'SaveChanges(bool)' – Backs

    +0

    2と3を入れ替える必要はありませんか?私はあなたが既にそれらを保存した後にあなたが変更を受け入れる(または拒否する)方法を理解していません。 – Sentry

    答えて

    2

    :; ``そしてAcceptAllChanges() `のSaveChanges(false)をしようとしない理由

    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; 
        } 
    
    関連する問題