实体框架7中的显式事务

时间:2015-12-21 16:14:33

标签: c# asp.net-core entity-framework-core

有人知道如何在Entity Framework 7中创建显式事务吗??? 我找到的所有信息都是指EF的第6版。文档也非常不完整,所以有人能提供一个例子吗?

我有一个dbContext,我必须删除一个实体及其相关的对象,然后再次插入它们,但是在同一个事务中,所以我总是会有一个"版本&#34 ;行。

1 个答案:

答案 0 :(得分:16)

交易功能包含在EF7中,仅从RC1开始(参见the statement)。 .SaveChanges()(或.SaveChangesAsync())的调用应使用自动交易。然后我想,例如,之前某些实体项的状态应该标记为已删除。

可以通过在

内的数据库中包装一些操作片段来显式启动事务
using (context.Database.BeginTransaction()) {
    /*do something*/
}

该事务将在.Dispose()块结束时通过调用using来提交。可以选择使用

using (var transaction = await context.Database.BeginTransactionAsync()) {
    /*do something*/
    /*one can call
       transaction.Rollback() or transaction.Commit()
      explicitly in the code */
}

它通常都应该在以前版本的Entity Framework中看起来像。例如,请参阅the post