【发布时间】:2015-03-26 13:03:34
【问题描述】:
我有一个 WCF 数据服务,它使用 DBML 文件生成我的 DataContext 所需的所有代码。我的数据库在 SQL Azure 业务层上运行(因此仍然使用共享模型),并且我正在使用瞬态故障处理应用程序块来包装我的所有调用。
我看到的问题是我仍然在“超时已过期”周围收到一些 SqlExceptions。我的重试策略与 Retrying 事件挂钩以记录任何重试,但除了超时异常外,我从未在日志中看到任何内容。
根据我的研究,Retry 块似乎只重试查询并假定它具有可靠的连接。但是,由于我使用的是 DataContext,因此我实际上无法控制设置该连接,并且由于我现有的所有代码都是 Linq2Sql,因此我不想切换它。
我错过了一些简单的东西吗?似乎没有任何方法可以告诉 DataService CurrentDataSource 应该是一个可靠的连接,或者无论如何使用 RetryManager 来使用连接本身的策略。
这是我的一个 ServiceOperations 的示例:
[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 秒。
【问题讨论】:
标签: linq-to-sql azure-sql-database wcf-data-services