您的位置:首页 > 其它

Linq to Entities in Ado.net EF的事务

2009-07-10 17:53 477 查看

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



前言

这事吧,还得从LinqtoSql说起

近乎所有的LinqtoSQL的查询中总是免不了execsp_reset_connection与AuditLogout(就是数据库连接)

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

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

using(TransactionScopets=newTransactionScope())
{
//一堆LinqtoSqlorLinqtoEntities,重典语
}
不过这个经过无数次的使用发现,CUD它的确可以将生成的SQL事务执行,但也不是完全.

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


正解

正确解决方法如下

varDB=newXXContext();
DB.Connection.Open();
using(varts=DB.Connection.BeginTransaction()){
//一堆SqltoEntities,重典语
}
DB.Connection.Close();//是否必写写未实验

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

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

这回爽了

其它

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

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

cmd.Connection=(DB.ConnectionasEntityConnection).StoreConnection;

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


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: