Как автоматически восстановить потерянное соединение, если оно потеряно, используя Linq to SQl - PullRequest
3 голосов
/ 28 ноября 2009

я не хочу инкапсулировать каждый вызов в блоке try catch

есть ли событие, на которое я могу подписаться, на случай, если соединение потеряно или истекло время ожидания, чтобы я мог восстановить соединение ..

или какой-либо способ не проверять каждый запрос linq.

а если нет, то почему бы и нет!

Редактировать: есть ли у Linq to Entity?

Редактировать: я использую Microsoft SQL Azure, и он много раз разрывает соединения.

Редактировать: я открываю новое соединение при каждом обращении к БД. так что я не оставляю соединение открытым.

Ответы [ 3 ]

1 голос
/ 13 декабря 2009

Вы можете рассмотреть возможность написания своего собственного поставщика LINQ (использующего большую часть функциональности существующего), который добавляет именно эту функцию. Это может оказаться менее трудоемким, чем обработка исключения каждый раз.

1 голос
/ 28 ноября 2009

Даже если бы было такое событие (не уверен), вы все равно не могли на него положиться. Сетевое соединение может внезапно оборваться, ядро ​​базы данных будет занят, выполняя какой-либо другой запрос, всегда возможен таймаут. Лучше наблюдать непосредственно за запросом, если он был успешным или неудачным, независимо от причины.

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

Почему вы получаете так много капель? Вы долго держитесь за объект контекста данных? Создать его дешево, поэтому просто создайте новый, когда начинаете новую единицу работы.

Из этого MSDN блога

Лучше ошибиться из-за более короткого срока службы - хорошая модель для начала - единица работы или даже один запрос для серверов без состояния.

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