TransactionScope只要一个操作失败,它会自动回滚,Complete表示事务完成
實事上,一個錯誤的理解就是Complete()方法是提交事務的,這是錯誤的,事實上,它的作用的表示本事務完成,它一般放在try{}的結尾處,不用判斷前臺操作是否成功,如果不成功,它會自己回滾。
? #region 事務問題
??????????? using (TransactionScope trans = new TransactionScope())
??????????? {
??????????????? try
??????????????? {
??????????????????? InsertUserBase(); //它插入不成功,自己回滾
??????????????????? UserInfos userInfo = new UserInfos
??????????????????? {
??????????????????????? UserID = "1",
??????????????????????? RealName = "zzl",
??????????????????? };
??????????????????? db.UserInfos.InsertOnSubmit(userInfo);
??????????????????? db.SubmitChanges();
??????????????????? trans.Complete();
??????????????? }
??????????????? catch (Exception)
??????????????? {
??????????????????? // throw;
??????????????? }
??????????????? finally
??????????????? {
??????????????????? trans.Dispose();
??????????????? }
??????????? }
??????????? #endregion
? static bool InsertUserBase()
??????? {
??????????? bool flag;
??????????? try
??????????? {
??????????????? UserBases userbase = new UserBases
??????????????? {
??????????????????? UserID = "0005",
??????????????????? Name = "zzl",
??????????????????? CreateDate = DateTime.Now,
??????????????????? UpdateDate = DateTime.Now,
??????????????? };
??????????????? db.UserBases.InsertOnSubmit(userbase);
??????????????? db.SubmitChanges();
??????????????? flag = true;
??????????? }
??????????? catch (Exception)
??????????? {
??????????????? throw;
??????????? }
??????????? return flag;
??????? }
InsertUserBase()只要出現(xiàn)異常,程序將自己回滾
總結
以上是生活随笔為你收集整理的TransactionScope只要一个操作失败,它会自动回滚,Complete表示事务完成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为售卖的首款车交付或延期 四月底订
- 下一篇: SQL 列转行,即多行合并成一条