Linq多表操作中事务的应用

简介:
 

linq中单表的操作本来是通过自身的事务处理操作的,但是,多个表之间的数据同步操作就不行了。我们也

可以用sql中的事务机制,其实也是一个道理。

 

  我们要使用TransactionScope,必须添加System.Transactions.dll引用。

  ①我们先看一个可以正确插入的例子:

   using (TransactionScope scope = new TransactionScope())
   {
                M_Test_QBank_Choose m = new M_Test_QBank_Choose();
                m.QContent = "111";
                m.LessonNum = "111";
                m.Answer = "111";
                m.AnswerIndex = "111";
                m.TeacherID = "10000";
               BLL.M_Test_QBank_ChooseBLL.Insert(m);  // insert方法里面已经submitChanges
               int a = m.id;
               scope.Complete();
   }

   a可以拿到插入的记录的id。


   ②我们来模拟一个插入出错的情景:

            using (TransactionScope scope = new TransactionScope())
            {
                M_Test_QBank_Choose m = new M_Test_QBank_Choose();
                m.QContent = "111";
                m.LessonNum = "111";
                m.Answer = "111";
                m.AnswerIndex = "111";
                m.TeacherID = "10000";
               BLL.M_Test_QBank_ChooseBLL.Insert(m);
              int a = m.id;
             int b = Convert.ToInt32("aaa");
              scope.Complete();
            }



a可以拿到插入的记录,但是下面出错,就会回滚,数据库中不会有插入的记录。

这里的scope.Complete();会将里面的多个表的操作同时提交。如果不成功则会自动回滚。


关于Linq事务的详细说明,请参见我新浪博客转载的文章《Linq to SQL 事务》

http://blog.sina.com.cn/s/blog_67aaf4440100sbyb.html

 

关于使用时提示,请参见我的新浪博客:《MSDTC不可用解决办法

http://blog.sina.com.cn/s/blog_67aaf4440100wo3z.html

目录
相关文章
|
1月前
|
SQL 存储 数据库
sql事务、视图和索引
sql事务、视图和索引
14 0
|
3月前
|
关系型数据库 MySQL 数据库
MySQL数据库-多表关联更新数据
MySQL数据库-多表关联更新数据
36 1
|
10月前
|
SQL 关系型数据库 MySQL
【MySQL数据库基础 四】DML数据操作语句
【MySQL数据库基础 四】DML数据操作语句
88 0
|
SQL 关系型数据库 MySQL
Mysql数据库基础篇 - 多表查询与事务的操作
Mysql数据库基础篇 - 多表查询与事务的操作
|
SQL 数据库
数据库增删查改联表操作的sql语句
数据库增删查改联表操作的sql语句
95 0
|
SQL Java 数据库
一文速学-玩转SQL之执行顺序,单表自连接操作和用法
一文速学-玩转SQL之执行顺序,单表自连接操作和用法
149 0
一文速学-玩转SQL之执行顺序,单表自连接操作和用法
|
SQL Oracle 关系型数据库
数据库基础(三)----- 多表查询,事务,DCL
数据库基础(三)----- 多表查询,事务,DCL
数据库基础(三)----- 多表查询,事务,DCL
|
SQL 存储 关系型数据库
关于mysql,需要掌握的基础(一):CRUD、存储引擎、单表查询相关、多表查询join、事务并发、权限管理等等
关于mysql,需要掌握的基础(一):CRUD、存储引擎、单表查询相关、多表查询join、事务并发、权限管理等等
117 0