когда я должен использовать шаблон сеанса для запроса - PullRequest
3 голосов
/ 31 марта 2009

Я вижу этот паттерн везде, но Linq to SQL его не реализует. Если объекты Session / Unit-of-Work являются легковесными (их можно создавать и уничтожать без снижения производительности), а пул соединений поддерживает соединения с базой данных, зачем и когда мне нужен шаблон сеанса для запроса?

Ответы [ 2 ]

3 голосов
/ 04 апреля 2009

Я считаю, что идея сеанса на запрос заключается больше в том, когда вы открываете и закрываете сеанс, а не в повышении производительности.

Идея в том, что

  1. Открытие сеанса запустит транзакцию еще до того, как ваш код будет вызван
  2. Ваша бизнес-логика и ваша структура имеет полный доступ к базе данных до последнего возможного момента
  3. Ваша транзакция совершена для вас, вместо того, чтобы делать это каждый раз самостоятельно

Идея № 2 важна для того, чтобы вы могли смешивать веб-фреймворки и ленивую загрузку данных; если метод визуализации вызывается во время рендеринга ваших данных после выполнения кода, и вы закрыли сеанс, вы не сможете лениво загрузить результат этого геттера.

0 голосов
/ 13 февраля 2012

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

Если вы не используете ленивую загрузку, она вам не нужна.

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