打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
EF6 用Database.BeginTransaction管理事务




我们插入两条相同的数据,并分别更新两条数据,两条数据,都带有事务功能,代码如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading;

  6. namespace CodeFirstDemo
  7. {
  8.         #region -   版   权   信   息  -
  9.         //======================================================
  10.         //
  11.         //      创 建 人:小渣渣
  12.         //      创建时间:2017/04/08 08:55:47
  13.         //      邮    箱:help@itsvse.com
  14.         //      个人网站:http://www.itsvse.com
  15.         //      功    能:
  16.         //      修改纪录:
  17.         //
  18.         //======================================================
  19.         #endregion

  20.         class Program
  21.         {
  22.                 static void Main(string[] args)
  23.                 {
  24.                         Console.WriteLine("作者 www.itsvse.com #小渣渣 !");
  25.                         TestDb db = new TestDb();
  26.                         if (!db.Tab1.Any(x => x.Id == 1))
  27.                         {
  28.                                 db.Tab1.Add(new Tab1()
  29.                                 {
  30.                                         Name = "小明",
  31.                                         Remark = "备注"
  32.                                 });
  33.                         }
  34.                         if (!db.Tab1.Any(x => x.Id == 2))
  35.                         {
  36.                                 db.Tab1.Add(new Tab1()
  37.                                 {
  38.                                         Name = "小明",
  39.                                         Remark = "备注"
  40.                                 });
  41.                         }
  42.                         db.SaveChanges();
  43.                         Console.WriteLine("插入基础数据成功!");
  44.                         Console.ReadKey(true);
  45.                         using (var db1 = new TestDb())
  46.                         {
  47.                                 using (var tran = db1.Database.BeginTransaction())
  48.                                 {
  49.                                         try
  50.                                         {
  51.                                                 string sql = "UPDATE [Tab1] SET Name='测试' WHERE Id=1";
  52.                                                 db1.Database.ExecuteSqlCommand(sql);
  53.                                                 db1.SaveChanges();
  54.                                                 //处理业务
  55.                                                 tran.Commit();
  56.                                         }
  57.                                         catch (Exception ex)
  58.                                         {
  59.                                                 tran.Rollback();
  60.                                         }
  61.                                 }
  62.                         }
  63.                         Console.WriteLine(db.Tab1.Single(x => x.Id == 1).Name);
  64.                         using (var db2 = new TestDb())
  65.                         {
  66.                                 using (var tran = db2.Database.BeginTransaction())
  67.                                 {
  68.                                         try
  69.                                         {
  70.                                                 string sql = "UPDATE [Tab1] SET Name='测试' WHERE Id=2";
  71.                                                 db2.Database.ExecuteSqlCommand(sql);
  72.                                                 db2.SaveChanges();
  73.                                                 //处理业务
  74.                                                 throw new Exception("test");
  75.                                                 tran.Commit();
  76.                                         }
  77.                                         catch (Exception ex)
  78.                                         {
  79.                                                 tran.Rollback();
  80.                                         }
  81.                                 }
  82.                         }
  83.                         Console.WriteLine(db.Tab1.Single(x => x.Id == 2).Name);
  84.                         Console.WriteLine("success!");
  85.                         Console.ReadKey();
  86.                 }

  87.         }
  88. }
复制代码


我们让第一个事务里面能够正常执行业务逻辑代码;
我们让第二个事务里面故意抛出异常,看是否能正常回滚。

测试结果,事务一没有异常,更新成功;事务二,抛出异常,更新失败,并且回滚。

源码下载:

游客,如果您要查看本帖隐藏内容请回复
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python连接mysql数据库操作
SQLite 附加数据库 | w3cschool菜鸟教程
【转】Android SQLite 事务处理
Android数据存储SQLite的事务操作
彭大师浅谈IBM DB2的数据库备份与恢复
Android批量插入数据到SQLite数据库
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服