2009-12-03 5 views
3

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

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

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

ответ

3

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

+0

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

0

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

Смежные вопросы