我在我的asp.net应用程序中使用企业库数据访问块。我想在多个存储过程中实现业务逻辑层的事务。 Entlib打开一个新的数据库访问连接。 以下列方式使用事务范围是否会导致分布式事务?
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
// calling necessary DAL methods
scope.Complete();
}
有没有更好的方法来实现BLL的交易?
答案 0 :(得分:0)
如果您将SQL Server称为后端,则取决于服务器版本。这是一篇好文章:DO.NET and System.Transactions
我引用:
TransactionScope足够聪明 不要创建一个完全分布式的 具有所有开销的事务 除非有必要。如果 交易中涉及的资源 很不稳定,一切都会留下来 内存和微软分发 交易协调员(DTC)不会 参与其中。如果资源是 连接到SQL Server 2005,DTC 将不会涉及和SQL Server 2005年将处理交易。这个 相当于打开一个内部 SQL事务。如果SQL Server 2000是 使用,它将解决使用完整 DTC交易。