RetryPolicy in Subsonic



我使用亚音速与SqlAzure数据库,它的工作很好。我想通过实现这篇博客文章中提到的最佳实践来改进我的应用程序。

根据文章,我可以这样做:

var sqlAzureRetryPolicy = ... code omitted ...;
return sqlAzureRetryPolicy.ExecuteAction<IEnumerable<Product>>(() =>
{
    // Invoke a LINQ query.
    return result;
});

然而,这意味着我将不得不复制和粘贴这个代码片段到我的解决方案,我认为这将是乏味的和容易出错的,我的团队的其他成员可能会忘记,等等。我不认为这是最好的解决办法,我在想是否有更好的办法。

谁有什么建议吗?

您考虑过实现扩展方法吗?您可以将一个方法"添加"到现有的类中(在您的例子中包括IEnumerable和IQueryable),以使该方法看起来像是类的一部分。扩展方法对于集中这类代码非常有用。下面是一篇介绍如何扩展字符串类的简单文章:http://www.developer.com/net/csharp/article.php/3592216/Using-the-New-Extension-Methods-Feature-in-C-30.htm

我个人使用扩展方法(我创建了一个TryOpen和TryExecuteReader)来做你所要求的,但反对SqlCommand和SqlConnection类。所以我的代码示例对LINQ没有帮助。

相关内容

  • 没有找到相关文章