Размер пакета NHibernate во всем приложении - есть проблемы? - PullRequest
2 голосов
/ 01 февраля 2010

Если я настрою NHibernate с размером пакета, скажем, 20, могу ли я столкнуться с проблемами в обычных сценариях, не связанных с пакетным обновлением?

Большинство обновлений / вставок, выполняемых моим приложением,один-офф.Но в некоторых случаях я делаю масштабные обновления / вставки, которые выиграют от пакетирования.Должен ли я использовать другую конфигурацию сеанса для них или, как вы думаете, я могу смело оставить размер пакета выше для всего приложения?

Причина, по которой я спрашиваю, состоит в том, что сложно настроить другой сеанс только длясценарии пакетирования (поскольку это веб-приложение с сеансами по запросу).

1 Ответ

2 голосов
/ 01 июля 2010

В документации NH единственное упоминание о пакетных обновлениях, которое упоминается, это:

оптимистичная проверка параллелизма может быть нарушено, так как ADO.NET 2.0 не вернуть количество строк, затронутых каждое утверждение в пакете, только общее количество строк, затронутых партия.

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

Однако , вам все равно следует подумать о создании нового сеанса для ваших пакетных операций. Обычный сеанс NHibernate будет неэффективным для пакетных обновлений / вставок , потому что кэш первого уровня отслеживает каждый отдельный объект. Вы можете контролировать это вручную, выполняя session.Flush(); session.Clear(); регулярно, но, вероятно, вместо этого проще использовать StatelessSession.

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