2

我们正计划在 asp.net 网络表单中开发一个新的应用程序。我们正在使用实体框架(使用 POCO 类方法)。

我们有表示层、业务逻辑层和数据访问层。我的问题是,如果我们想在页面上进行一些事务性工作,意味着向客户添加一些数据,添加一些与客户无关的其他数据,发送电子邮件等,那么我们如何在单个事务中完成。

我们是否应该在网页后面的代码上开始交易?或者将这些所有数据传递给 BLL 中的某个客户方法,它会以事务方式完成所有这些操作?在这两种方式中,代码都不会松散耦合。

当操作涉及不同的实体时,任何人都可以让我知道进行交易工作的最佳实践吗?

4

1 回答 1

2

描述

SaveChanges在内部使用事务,但如果你想执行多个SaveChanges调用,你需要TransactionScope. 如果scope.Complete()未调用(发生异常),则事务将回滚。

样本

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
     // add something to your context
     myDbContext.Add(...);
     // save changes
     myDbContext.SaveChanges();
     // commit changes 
     scope.Complete(); 
}

更多信息

于 2012-05-16T07:34:33.933 回答