2

我已部署到不支持 MSDTC 的 Azure 和 Azure SQL,我无法理解如何修改我的代码以防止我假设的嵌套连接。我对 EF 还很陌生,我对 TransactionScope 的了解并不好,所以我不确定我是否有正确的模式。

我正在尝试使用 repos,它调用 ObjectContext 的共享实例(我试图处理 EndRequest 但有问题,所以这对我来说是另一个问题)。

我有一个事务多次调用 ObjectContext 实例上的 SaveChanges,但在某些时候它会被释放。是什么控制了这个,你能推荐我能做些什么来让它正常工作吗?

4

1 回答 1

3

如果您想避免分布式事务的问题,您必须手动处理连接,因为每个上下文实例只需要一个打开的连接TransactionScope= 一个上下文实例,其中一个连接用于所有查询和数据库更新。代码应如下所示:

using (var context = new YourObjectContext()) {
    context.Connection.Open();

    ...
}

我正在尝试使用 repos,它调用 ObjectContext 的共享实例(我试图在 EndRequest 上处理但有问题,所以这对我来说是另一个问题)。

如果您在多个请求之间共享您的上下文实例,或者更糟糕的是,如果您只使用单个上下文实例来处理您的所有请求,您现在应该停止并完全重新设计您的应用程序。否则将无法正常工作。

于 2012-12-20T10:32:42.430 回答