相关疑难解决方法(0)

NOLOCK与Linq to SQL

是否有可能让Linq2Sql在其SQL中发出NOLOCK?如果是这样,怎么样?

linq-to-sql

69
推荐指数
4
解决办法
4万
查看次数

配置的执行策略"SqlAzureExecutionStrategy"不支持用户启动的事务

我正在使用最新的v6实体框架以及UnitOfWork模式.在过去的几年里,这在服务器上一直很好.

我想转移到azure托管并使用SQLAzure,因此开始迁移应用程序.但是我遇到了很多问题.

首先,我一直在间歇地得到这个错误

从服务器接收结果时发生传输级错误.

经过一些谷歌搜索,似乎这很常见,你需要实现自己的SqlAzureExecutionStrategy- 一切似乎都很好.直到我发现它不支持发起的交易!

然后我偶然发现了这篇博文 - 其中概述了确切的问题并提供了如何解决问题的示例代码(或者我认为).

我完全按照这个帖子(据我所知).我有我的dBconfiguration类设置,它在应用程序启动时击中了SetExecutionStrategy.

public class EfConfig : DbConfiguration
{
    public EfConfig()
    {
        SetExecutionStrategy("System.Data.SqlClient", () => SuspendExecutionStrategy
              ? (IDbExecutionStrategy)new DefaultExecutionStrategy()
              : new CustomSqlAzureExecutionStrategy());
    }

    public static bool SuspendExecutionStrategy
    {
        get { return (bool?)CallContext.LogicalGetData("SuspendExecutionStrategy") ?? false; }
        set { CallContext.LogicalSetData("SuspendExecutionStrategy", value); }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个上面引用的自定义类,名为'CustomSqlAzureExecutionStrategy',我在下面提到并覆盖了ShouldRetryOn方法

public class CustomSqlAzureExecutionStrategy : SqlAzureExecutionStrategy
{
    protected override bool ShouldRetryOn(Exception exception)
    {
        var shouldRetry = false;

        var sqlException = exception as SqlException;
        if (sqlException != null)
        {
            foreach …
Run Code Online (Sandbox Code Playgroud)

entity-framework azure sqltransaction azure-sql-database

14
推荐指数
1
解决办法
8393
查看次数