RetryPolicy в дозвуковой - PullRequest
       39

RetryPolicy в дозвуковой

1 голос
/ 25 апреля 2011

Я использую Subsonic с базой данных SqlAzure, и она отлично работает.Я хотел бы улучшить свое приложение, применяя рекомендованную лучшую практику, упомянутую в этой статье блога .

В соответствии со статьей я мог бы сделать что-то вроде:

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

Однако это будет означать, что мне придется копировать и вставлять этот фрагмент кода по всему моему решению, и я думаю, что это будет утомительно и подвержено ошибкам, другие члены моей команды могут забыть и т. Д. Я не думаю, что это лучшее решениеи мне интересно, есть ли лучший способ.

У кого-нибудь есть предложения, как это сделать?

1 Ответ

1 голос
/ 28 апреля 2011

Вы рассматривали реализацию метода расширения?Вы можете «добавить» метод к существующим классам (включая 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.

...