Linq to Entities in Ado.net EF的事务

简介: 保持重典的风格,先看一下最终的效果. 前言 这事吧,还得从Linq to Sql说起 近乎所有的Linq to SQL的查询中总是免不了exec sp_reset_connection 与Audit Logout(就 是数据库连接) 这一进一出,费时太多,于是近半年来每个月总有...

 

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

image

前言

这事吧,还得从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了.

 
 
相关文章
企业应用开发中.NET EF常用哪种模式?
企业应用开发中.NET EF常用哪种模式?
135 5
企业应用开发中.NET EF常用哪种模式?
企业应用开发中.NET EF常用哪种模式?
分享一个 .NET 通过监听器拦截 EF 消息写日志的详细例子
分享一个 .NET 通过监听器拦截 EF 消息写日志的详细例子
.NET 9 中 LINQ 新增功能实操
.NET 9 中 LINQ 新增功能实操
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
122 1
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
ASP.NET Web Api 使用 EF 6,DateTime 字段如何取数据库服务器当前时间
分享 2 个 .NET EF 6 只更新某些字段的方法
分享 2 个 .NET EF 6 只更新某些字段的方法
149 0

热门文章

最新文章