zoukankan      html  css  js  c++  java
  • Linq to Entities in Ado.net EF的事务

     

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

    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了.

     
     
  • 相关阅读:
    python2和python3中TestSuite().addTest的区别
    python2和python3中range的区别
    WebDriverAgent安装
    Charles IOS https抓包
    Python和 pytest的异常处理
    Python中yaml和json文件的读取和应用
    Python 获取当前文件所在路径
    自建包函数调用
    python的logging,将log保存到文件
    泛型
  • 原文地址:https://www.cnblogs.com/chsword/p/ef_Transaction.html
Copyright © 2011-2022 走看看