首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectContext中的EF6事务错误

ObjectContext中的EF6事务错误
EN

Stack Overflow用户
提问于 2014-07-24 20:35:31
回答 1查看 400关注 0票数 1

请帮帮忙,我正试着在EF6中使用Transaction。这是我在.net中第一次尝试使用transaction。我已经在他们的网站上阅读了微软的手册。http://msdn.microsoft.com/en-us/data/dn456843.aspx和我想使用事务进行用户注册,但都不起作用。我正在使用EF objectContext。下面是我的一小段代码:

代码语言:javascript
复制
using (var context= new MyModelContainer())
{ 
 using(var dbContextTransaction = context.Database.BeginTransaction())
      {
       try 
         {
          // code here to create user
          context.savechanges();
          // code here to add role
         context.savechanges();

         dbContextTransaction.Commit(); 
        }
      catch 
         {
         dbContextTransaction.Rollback(); 
         }
     }
}

我的问题是Visual Studio甚至不能识别Database.BeginTransaction()。可能是因为我们使用的是objectContext?我从不使用transaction。我改用另一个数据库,我们的模型是DbContext,它似乎是有效的。

我们如何将objectContext与事务一起使用(指的是非分布式系统)?有什么教程吗?

我尝试了事务作用域,但它似乎工作,但我读到它是为分布式系统((这意味着性能下降。有什么建议吗?感谢您的宝贵时间!

EN

回答 1

Stack Overflow用户

发布于 2014-07-24 20:59:30

替换该行

代码语言:javascript
复制
using(var dbContextTransaction = context.Database.BeginTransaction())

有了这个:

代码语言:javascript
复制
using(var dbContextTransaction = new TransactionScope())

并删除对回滚的调用。TransactionScore将执行您所需的操作。

TransactionScope与分布式系统兼容,但是如果您不调用其他数据库并按照说明使用它,那么它就足够满足您的需求了。如果你试图调用一个保存到另一个数据库(例如),那么它将需要特殊的特权,并且会抛出一个异常。

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

https://stackoverflow.com/questions/24933860

复制
相关文章

相似问题

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