EF Code First DBContext和Transactions

use*_*491 50 entity-framework transactions entity-framework-4.1 dbcontext

我想知道实现事务的最佳方式是什么DBContext.特别是,

  1. DbContext.SaveChanges如果我更改多个实体,是否实现事务内部?
  2. 如果我想DbContext.SaveChanges多次呼叫(相同的contxet /不同的contxets),如何实现交易?

Lad*_*nka 72

  1. 是.SaveChanges在内部使用交易.
  2. 使用TransactionScope换到多个呼叫SaveChanges

例:

using(var scope = new TransactionScope(TransactionScopeOption.Required,
    new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
{
    // Do something 
    context.SaveChanges();
    // Do something else
    context.SaveChanges();

    scope.Complete();
}
Run Code Online (Sandbox Code Playgroud)

  • 确保使用Sql 2008或更高版本作为数据库(或在客户端上运行MSDTC服务).以前的版本会将事务升级为第二个`SaveChanges`上的分布式事务.这是因为`DbContext`在内部处理其连接的打开和关闭. (6认同)