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

目录
相关文章
|
8月前
|
SQL API 数据库
Mybatits-plus实现简单的多表联查和分页操作
mybatits-plus提供了简单的curd单表操作API,可以使用多样的方式实现。但是多表联查的时候,我遇到了一些困难,不可以使用通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错。于是就回归到了Mapper.xml文件,这种方法实现起来简单,也可以实现动态sql,非常方便。
106 0
|
SQL 关系型数据库 MySQL
Mysql数据库基础篇 - 多表查询与事务的操作
Mysql数据库基础篇 - 多表查询与事务的操作
|
SQL Oracle 关系型数据库
数据库基础(三)----- 多表查询,事务,DCL
数据库基础(三)----- 多表查询,事务,DCL
数据库基础(三)----- 多表查询,事务,DCL
|
SQL 存储 关系型数据库
关于mysql,需要掌握的基础(一):CRUD、存储引擎、单表查询相关、多表查询join、事务并发、权限管理等等
关于mysql,需要掌握的基础(一):CRUD、存储引擎、单表查询相关、多表查询join、事务并发、权限管理等等
117 0
|
SQL 关系型数据库 MySQL
解决高并发下insert到数据库表多条记录的问题
解决高并发下insert到数据库表多条记录的问题
391 0
解决高并发下insert到数据库表多条记录的问题
|
SQL 设计模式 消息中间件
如何实现一个跨库连表SQL生成器?
用户只需在前端简单配置下指标,系统即可自动生成大宽表,让用户查询到他所需要的实时数据,数据源支持跨库并支持多种目标介质。这样的数据全局实时可视化如何实现?本文从需求分析开始,分享自动生成SQL功能开发中运用到的设计模式和数据结构算法设计。
3377 0
如何实现一个跨库连表SQL生成器?