使用Enterprise Library 5.0创建具有多个对象的事务的最佳实践是什么?

时间:2012-01-24 14:44:41

标签: .net sql-server transactions enterprise-library

背景

我有一个对象,它有许多属性是其他对象。在保存主对象时,我将一条记录插入数据库,然后调用子对象上的Save方法。此模型中的当前风险是,如果主对象保存到数据库,但其中一个子对象没有,那么数据将不会反映准确的状态。

我的.NET 4.0应用程序使用Enterprise Library 5.0,数据存储在一个SQL Server 2008数据库中。我想实现事务支持,以便在所有保存成功时保存所有对象,或者在失败时回滚。

问题:

我在.NET 2.0 vs .NET 1.0 / 1.1中找到了关于事务支持的good but dated article,但想知道当前最佳实践是实现事务支持的。

1 个答案:

答案 0 :(得分:1)

我最终使用上面引用的文章中概述的System.Transactions.TransactionScope。 Enterprise Library 3.0及更高版本在连接到数据库时查找Transaction.Current。您不必显式传递交易信息。

using(TransactionScope scope = new TransactionScope())
{
   /* Perform transactional work here */
   //No errors-commit transaction
   scope.Complete();
}