Обработка исключений в отложенной оценке LINQ to SQL - PullRequest
3 голосов
/ 03 декабря 2009

У меня есть LINQ to SQL / Unity / ASP.NET MVC / SQL Server приложение, размещенное в Azure. Я использую Lazy Evaluation по всему сайту. Приложение использует TCP-соединение с SQL Server, и время от времени я получаю сообщение «Ошибка транспортного уровня при отправке запроса на сервер». SqlException.

Что ж, поскольку запрос становится материализованным, когда он вызывается позже в коде, я не могу просто обернуть определенный фрагмент кода с помощью try / catch.

Есть ли способ, которым я могу обработать это исключение путем реализации интерфейса или присоединения делегата к DataContext?

Ответы [ 2 ]

3 голосов
/ 30 января 2010

Если вы используете результаты из linq как есть, то вы должны обработать ошибку в коде, который материализует данные. Однако вместо того, чтобы просто возвращать результаты запроса linq напрямую, вы могли бы обернуть его в реализацию IEnumerable вашей собственной конструкции, которая может свободно реализовывать любую обработку ошибок, которая вам нравится. Таким образом, код, который использует IEnumerable, не должен обрабатывать исключение.

0 голосов
/ 06 декабря 2009

Я думаю, что единственный способ исправить это - обернуть код, который инициирует (материализовать) вызов SQL-сервера в попытку catch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...