Entity framework 实体框架4事务范围

Entity framework 实体框架4事务范围,entity-framework,transactions,scope,Entity Framework,Transactions,Scope,我在一个函数中运行2个插入。第一个是非实体框架插入(AD0.NET)。第二个是EntityContext.SaveChanges() 我不能将这两个都嵌套在事务作用域中吗?可以 using (TransactionScope scope = new TransactionScope()) { InsertRecord(); context.SaveChanges(); scope.Complete(); } 正如Eranga所说,这是完全可行的,尽管有些混乱 看 还应考

我在一个函数中运行2个插入。第一个是非实体框架插入(AD0.NET)。第二个是EntityContext.SaveChanges()

我不能将这两个都嵌套在事务作用域中吗?

可以

using (TransactionScope scope = new TransactionScope())
{

   InsertRecord();

   context.SaveChanges();

   scope.Complete();
}

正如Eranga所说,这是完全可行的,尽管有些混乱

还应考虑为事务范围设置isolationlevel,例如

TransactionOptions options = new TransactionOptions();
options.IsolationLevel = IsolationLevel.Serializable;

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
{
// Do something here
}
两个不同的数据库插入(两个不同的并发连接)将导致transactionscope升级为分布式事务。用于测试它将在有问题的机器之间工作


另外,不同的数据库有其自己的默认隔离级别,因此最好在代码中指定此级别,例如SQL Server Express默认使用可序列化,SQL Server(完整版本)则不使用

@Kvlive可以提供更多细节吗?