我使用亚音速与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没有帮助。