请帮帮忙,我正试着在EF6中使用Transaction。这是我在.net中第一次尝试使用transaction。我已经在他们的网站上阅读了微软的手册。http://msdn.microsoft.com/en-us/data/dn456843.aspx和我想使用事务进行用户注册,但都不起作用。我正在使用EF objectContext。下面是我的一小段代码:
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与事务一起使用(指的是非分布式系统)?有什么教程吗?
我尝试了事务作用域,但它似乎工作,但我读到它是为分布式系统((这意味着性能下降。有什么建议吗?感谢您的宝贵时间!
发布于 2014-07-24 20:59:30
替换该行
using(var dbContextTransaction = context.Database.BeginTransaction())有了这个:
using(var dbContextTransaction = new TransactionScope())并删除对回滚的调用。TransactionScore将执行您所需的操作。
TransactionScope与分布式系统兼容,但是如果您不调用其他数据库并按照说明使用它,那么它就足够满足您的需求了。如果你试图调用一个保存到另一个数据库(例如),那么它将需要特殊的特权,并且会抛出一个异常。
https://stackoverflow.com/questions/24933860
复制相似问题