我正在使用亚音速与一个SqlAzure数据库,它工作得很好。我想通过实现this blog article中提到的建议的最佳实践来改进我的应用程序。
根据这篇文章,我可以这样做:
var sqlAzureRetryPolicy = ... code omitted ...;
return sqlAzureRetryPolicy.ExecuteAction<IEnumerable<Product>>(() =>
{
// Invoke a LINQ query.
return result;
});然而,这将意味着我将不得不将此代码片段复制并粘贴到我的解决方案中,我认为这将是乏味和容易出错的,我的团队其他成员可能会忘记,等等。我不认为这是最好的解决方案,我想知道是否有更好的方法。
有没有人有关于如何做的建议?
发布于 2011-04-28 22:07:24
你是否考虑过实现一个扩展方法?您可以将一个方法“添加”到现有的类中(包括本例中的IEnumerable和IQueryable ),使其看起来像是类的一部分。扩展方法对于集中这类代码非常有用。下面是一篇简单的文章,展示了如何扩展string类:http://www.developer.com/net/csharp/article.php/3592216/Using-the-New-Extension-Methods-Feature-in-C-30.htm
我个人使用扩展方法(我创建了一个TryOpen和TryExecuteReader)来做您想做的事情,但是是针对SqlCommand和SqlConnection类。因此,我的代码示例对LINQ没有帮助。
https://stackoverflow.com/questions/5779209
复制相似问题