Linq to Entities in Ado.net EF的事务


保持重典的风格,先看一下最终的效果.

前言

  这事吧,还得从Linq to Sql说起

  近乎所有的Linq to SQL的查询中总是免不了exec sp_reset_connection 与Audit Logout(就 是数据库连接)

  这一进一出,费时太多,于是近半年来每个月总有那么几天来研究它

  网上呢,解决方案不是没有

using (TransactionScope ts = new TransactionScope())
{
//一堆Linq to Sql or Linq to Entities,重典语
}

  不过这个经过无数次的使用发现,CUD它的确可以将 生成的SQL事务执行,但也不是完全.

  而且在Select时它几乎就是不起作用,一对对的exec sp_reset_connection和Audit Logout,快把我B疯了

  正解

  正确解决方法如下

var DB=new XXContext();
DB.Connection.Open();
using (var ts = DB.Connection.BeginTransaction()) {
//一堆Sql to Entities,重典语
}

  DB.Connection.Close();//是否必写写未实验

  这一下就爽了,原本支离破碎的SQL事务一气和成

  其实也可以写一个自定义实现了IDisposable的类,使Open() Close()也省了.

  这回爽了

  其它

  另:有的时候我们要使用直接使用Sql来进行CUD(没R)也就是用传统的Command来操作

  在EF中如何才能使你的操作与EF的Sql to Entities在同一事务中呢,其实这样即可:

  cmd.Connection=(DB.Connection as EntityConnection).StoreConnection;

  这样就可让二者使用共同 的Connection了



相关阅读:
ajax XMLHTTP Post Form时的表单乱码综合解决
用SQL批量插入数据的存储过程
浅析PHP创建ZIP档案文件技巧
鼠标放上去则向上向下滚动的代码" target="_blank">鼠标放上去则向上向下滚动的代码
Windows 7 RTM、Vista、XP 性能测试
alt属性和title属性
设置和读取cookie的javascript代码
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
slmgr.vbs介绍与VA2.0部署
SQL Server数据库内存会不断增加的问题分析
NT IIS下用ODBC连接数据库
简明Python教程
passwordStrength 基于jquery的密码强度检测代码使用介绍
精确测量网页的软件:FastStone Capture
快速导航

Copyright © 2016 phpStudy |