【问题标题】:Transaction being promoted to distributed in Entity Framework在实体框架中将事务提升为分布式
【发布时间】:2012-04-02 09:27:55
【问题描述】:

我们在不应该提升为分布式的事务上遇到问题。我们在 WCF 服务中使用 Entity Framework 4.1 和 TransactionScope:

    [OperationBehavior(TransactionScopeRequired = true)]
    [TransactionFlow(TransactionFlowOption.Allowed)]
    public void SetCapLength(Guid orderId, int capLength){}

为每个服务请求创建一个 ObjectContext 实例,并且在整个请求期间只使用一个。

我们使用的是 SQL Server 2008 R2。

分布式事务的提升似乎很随机。

有谁知道 E.F. 促成我们的交易的原因是什么?

【问题讨论】:

    标签: wcf entity-framework transactions transactionscope


    【解决方案1】:

    您正在使用TransactionFlowOption - 因此,如果您很幸运并且一切都正确配置,那么从客户端流到您的服务的事务 = 分布式事务。服务端的所有本地事务都会加入分布式事务。

    【讨论】:

    • 啊,[TransactionFlow(TransactionFlowOption.Allowed)] 可能有点无意。我们有一个不创建任何事务的 Silverlight 客户端。我可以删除它,但我不确定这是问题所在?
    • 不,如果是silverlight,这不会有问题。它是一直发生在特定操作上还是随机发生?您是否访问任何其他事务资源?
    • 非常随机。我们还没有找到任何模式,也无法真正重现它。有时它只是发生了。不,我们不访问其他事务资源。有时服务会调用另一个服务,但这些服务也没有配置为流事务。
    猜你喜欢
    • 2014-12-28
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多