背景
我有一个对象,它有许多属性是其他对象。在保存主对象时,我将一条记录插入数据库,然后调用子对象上的Save方法。此模型中的当前风险是,如果主对象保存到数据库,但其中一个子对象没有,那么数据将不会反映准确的状态。
我的.NET 4.0应用程序使用Enterprise Library 5.0,数据存储在一个SQL Server 2008数据库中。我想实现事务支持,以便在所有保存成功时保存所有对象,或者在失败时回滚。
问题:
我在.NET 2.0 vs .NET 1.0 / 1.1中找到了关于事务支持的good but dated article,但想知道当前最佳实践是实现事务支持的。
答案 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();
}