Linq to sql DataContext上可靠连接的瞬态故障处理

Linq to sql DataContext上可靠连接的瞬态故障处理,linq-to-sql,azure-sql-database,wcf-data-services,Linq To Sql,Azure Sql Database,Wcf Data Services,我有一个WCF数据服务,它使用DBML文件生成DataContext所需的所有代码。我的数据库运行在SQL Azure业务层上,因此仍然使用共享模型,并且我使用瞬态故障处理应用程序块来包装我的所有调用 我看到的问题是,在超时过期前后,我仍然会遇到许多SQLException。我的重试策略挂钩到重试事件以记录任何重试,但除了超时异常,我在日志中从未看到任何内容 根据我的研究,重试块似乎只重试查询,并假设它有一个可靠的连接。但是,由于我使用的是DataContext,我实际上无法控制设置该连接,而且

我有一个WCF数据服务,它使用DBML文件生成DataContext所需的所有代码。我的数据库运行在SQL Azure业务层上,因此仍然使用共享模型,并且我使用瞬态故障处理应用程序块来包装我的所有调用

我看到的问题是,在超时过期前后,我仍然会遇到许多SQLException。我的重试策略挂钩到重试事件以记录任何重试,但除了超时异常,我在日志中从未看到任何内容

根据我的研究,重试块似乎只重试查询,并假设它有一个可靠的连接。但是,由于我使用的是DataContext,我实际上无法控制设置该连接,而且由于我现有的所有代码都是Linq2Sql,所以我不想切换它

我错过了一些简单的东西吗?似乎没有任何方法可以告诉数据服务CurrentDataSource应该是可靠的连接,或者使用RetryManager在连接本身上使用策略

下面是我的一个服务操作示例:

[WebGet]
    public MyTable GetDetailsById(string id)
    {
        try
        {
            var detail = retryPolicy.ExecuteAction<MyTable>(() =>
                CurrentDataSource.MyTable
                .Where(l => l.id == id)
                .FirstOrDefault());

            return detail;
        }
        catch (Exception ex)
        {
            Trace.TraceError(ex.Message);
        }
    }
有什么想法吗


更新:我的查询不会超过30秒。

当客户端在x秒内没有收到服务器的响应时,命令超时。错误不是暂时性错误,因此不由重试逻辑处理。一般建议将Azure SQL数据库的命令超时更改为至少30秒。此外,如果运行的查询长,则应考虑在应用程序范围的默认值之外增加这些查询的超时。
可以找到关于如何设置命令超时的文档。

为了参数起见,让我们假设查询时间不超过30秒。问题仍然存在,如何使用DataContext与L2S建立可靠连接?