栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

.net中的交易

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.net中的交易

有两种主要的交易类型:连接交易和环境交易。连接事务(例如SqlTransaction)直接与db连接(例如SqlConnection)绑定,这意味着您必须不断传递连接-
在某些情况下可以,但是不允许“创建/使用/释放”用法,并且不允许跨数据库工作。一个例子(格式化为空格):

using (IDbTransaction tran = conn.BeginTransaction()) {    try {        // your pre        tran.Commit();    }  catch {        tran.Rollback();        throw;    }}

不太混乱,但仅限于我们的连接“ conn”。如果要调用其他方法,则现在需要传递“ conn”。

另一种方法是环境交易。.NET 2.0中的新功能,TransactionScope对象(System.Transactions.dll)允许在一系列操作中使用(合适的提供程序将自动注册环境事务)。这样可以很容易地改编为现有的(非事务性)代码,并可以与多个提供程序进行对话(尽管如果您与多个对话者进行交谈,则DTC会参与其中)。

例如:

using(TransactionScope tran = new TransactionScope()) {    CallAMethodThatDoesSomeWork();    CallAMethodThatDoesSomeMoreWork();    tran.Complete();}

请注意,这两种方法可以处理它们自己的连接(打开/使用/关闭/处理),但是它们将无声地成为环境事务的一部分,而无需我们传递任何内容。

如果您的代码错误,将在不使用Complete()的情况下调用Dispose(),因此它将回滚。支持预期的嵌套等,尽管您不能回滚内部事务但仍可以完成外部事务:如果有人不满意,则事务中止。

TransactionScope的另一个优点是它不仅仅与数据库绑定;任何支持交易的提供商都可以使用它。例如,WCF。甚至还有一些与TransactionScope兼容的对象模型(即具有回滚功能的.NET类-
也许比备忘录更容易,尽管我自己从未使用过这种方法)。

总而言之,这是一个非常非常有用的对象。

一些警告:

  • 在SQL Server 2000上,TransactionScope将立即转到DTC。这在SQL Server 2005及更高版本中已解决,可以使用LTM(少得多的开销),直到您与2个来源进行交谈,等到将其提升为DTC为止。
  • 出现小故障意味着您可能需要调整连接字符串


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/400773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号