实体框架和交易

时间:2012-05-16 07:22:17

标签: entity-framework-4 transactions

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

我们有Presentation层,业务逻辑层和数据访问层。我的问题是,如果在页面上我们想做一些交易工作,意味着向客户添加一些数据,添加一些与客户无关的其他数据,发送电子邮件等,那么我们如何在一次交易中完成。< / p>

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

当操作中涉及不同的实体时,是否可以让任何人知道进行交易工作的最佳做​​法?

1 个答案:

答案 0 :(得分:1)

描述

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(); 
}

更多信息

相关问题