首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架4事务作用域

实体框架4事务作用域
EN

Stack Overflow用户
提问于 2011-09-23 14:55:40
回答 2查看 2.7K关注 0票数 1

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

我能不能在一个事务作用域中同时嵌套这两个?

EN

回答 2

Stack Overflow用户

发布于 2011-09-23 15:26:21

是的,你可以

代码语言:javascript
复制
using (TransactionScope scope = new TransactionScope())
{

   InsertRecord();

   context.SaveChanges();

   scope.Complete();
}
票数 0
EN

Stack Overflow用户

发布于 2012-10-05 19:00:24

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

请参阅this link for peace of mind on TransactionScope

还要考虑设置事务作用域的隔离级别,例如

代码语言:javascript
复制
TransactionOptions options = new TransactionOptions();
options.IsolationLevel = IsolationLevel.Serializable;

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
{
// Do something here
}

两个不同的数据库插入(两个不同的并发连接)将导致事务作用域升级为分布式事务。使用DTCPIng.exe测试它将在所讨论的机器之间工作。

附注:不同的数据库有自己的默认隔离级别,所以最好在代码中指定它,例如,SQL Server Express默认使用Serializable,而SQL Server (完整版)不使用Serializable!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7525325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档