我已经部署到Azure和Azure SQL,它不支持MSDTC,我无法理解如何修改我的代码以防止我假设的是嵌套连接。我对EF很新,而且我对TransactionScope的了解不是很好,所以我不确定我是否有正确的模式。
我正在尝试使用repos,它调用ObjectContext的共享实例(我试图在EndRequest上处理但是有问题,所以这对我来说是另一个问题)。
我有一个在ObjectContext实例上多次调用SaveChanges的事务,但在某些时候它会被处理掉。什么是管理这个,你能推荐我能做些什么来使它正常工作吗?
答案 0 :(得分:3)
如果要避免分布式事务的问题,则必须手动处理连接,因为每个TransactionScope
=一个上下文实例只需要一个打开的连接,其中一个连接用于所有查询和数据库更新。代码应如下所示:
using (var context = new YourObjectContext()) {
context.Connection.Open();
...
}
我正在尝试使用repos,它调用了共享的实例 ObjectContext(我试图在EndRequest上处理但是有问题,所以 这对我来说是另一个问题。)
如果您在多个请求中共享您的上下文实例,或者更糟糕的是,如果您仅使用单个上下文实例来处理所有请求,则应立即停止并完全重新设计应用程序。 Otherwise it will not work correctly.