How can I reject all changes in a Linq to SQL's DataContext?

后端 未结 10 975
礼貌的吻别
礼貌的吻别 2020-11-27 18:57

On Linq to SQL\'s DataContext I am able to call SubmitChanges() to submit all changes.

What I want is to somehow reject all changes in the datacontext and rollback a

10条回答
  •  野趣味
    野趣味 (楼主)
    2020-11-27 19:28

    Here is how I did it. I just followed Teddy's example above and simplified it. I have one question though, why even bother with the refresh on the DELETES?

      public static bool UndoPendingChanges(this NtsSuiteDataContext dbContext)
      {
         if (dbContext.ChangesPending())
         {
            ChangeSet dbChangeSet = dbContext.GetChangeSet();
    
            dbContext.Refresh(RefreshMode.OverwriteCurrentValues, dbChangeSet.Deletes);
            dbContext.Refresh(RefreshMode.OverwriteCurrentValues, dbChangeSet.Updates);
    
            //Undo Inserts
            foreach (object objToInsert in dbChangeSet.Inserts)
            {
               dbContext.GetTable(objToInsert.GetType()).DeleteOnSubmit(objToInsert);
            }
    
            //Undo deletes
            foreach (object objToDelete in dbChangeSet.Deletes)
            {
               dbContext.GetTable(objToDelete.GetType()).InsertOnSubmit(objToDelete);
            }
         }
    
         return true;
      }
    

提交回复
热议问题