.net - 为什么我的 TransactionScope 在 EF Code First 应用程序中使用时尝试使用 MSDTC?

标签 .net entity-framework transactionscope

我刚刚针对 SQL 2010 Express 本地数据库向使用 EF 4.3 Code First 的 MVC3 应用程序介绍了 TransactionScope 的使用。当我在范围内尝试 SaveChanges 时,收到“提供程序无法打开”通知,并出现有关缺少 MSDTC 的内部异常。据我所知,只有当我使用多个连接字符串时才会发生这种情况。我只使用过与一个数据库的连接,应用程序中只有 1 个字符串。不过,我确实使用了多个 DbContext 实例,但在事务范围内只使用了一个实例。

我可以做什么来解决这个问题?

最佳答案

不知道是否与这篇文章类似? How to run two Entity Framework Contexts inside TransactionScope without MSDTC?

解决方法是:

0) 创建可促销事务(取决于 SQL Server 版本?)( http://msdn.microsoft.com/en-us/library/ms172070.aspx )

1) Entity Framework – MSDTC Gotchya ( http://joeknowsdotnet.wordpress.com/2012/07/19/entity-framework-msdtc-gotchya/ )

2) 避免不必要的分布式事务升级 ( http://petermeinl.wordpress.com/2011/03/13/avoiding-unwanted-escalation-to-distributed-transactions/ )

关于.net - 为什么我的 TransactionScope 在 EF Code First 应用程序中使用时尝试使用 MSDTC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11451112/

相关文章:

c# - 如何减少线程无限循环期间的处理器使用率?

c# - Entity Framework 5 日志数据库在运行时发生变化

c# - 根据网格行数在gridview中添加空行数

c# - 通过接口(interface)访问静态属性

c# - Entity Framework 是否使用反射并损害性能?

entity-framework - 附加和 EntityState.Detached

ado.net - 在 TransactionScope 中使用 ADO.Net 事务?

c# - 在 TransactionScope 范围内打开新的数据库连接,而不加入事务

c# - 事务范围因 Oracle : Connection is already part of a local or a distributed transaction 中的 BeginTransaction 而失败

c# - 我的加速度计代码有什么问题?