Какова Ваша стратегия управления сеансами NHibernate в настольных приложениях?

Это сделает это:

/[A-Za-z\u00C0-\u00FF ]+/.exec('hipopótamo maçã pólen ñ poção água língüa')

Он явно выбирает диапазон символов юникода. Он будет работать для латинских символов, но другие странные символы могут быть вне этого диапазона.

11
задан Luke Quinane 2 September 2009 в 12:51
поделиться

4 ответа

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

Например, у меня есть набор объектов, которые богаты данными и ленивые загруженный, и у меня есть представление сетки/сводки и представление деталей для них. В сводном сеткой представлении я не использую лениво загруженную версию объекта. Я использую суррогатный объект представить те данные, и что суррогатный объект не ленив загруженный.

С другой стороны, после того как пользователь выбирает ту запись для просмотра/редактирования, и Вы вводите мультиразбитое на страницы представление деталей объекта, именно тогда мы применяем ленивую загрузку к конкретному объекту. Данные теперь ленивы загруженный, в зависимости от которого детали посмотрелись только по требованию. Тем путем объем моей сессии, являющейся открытым для ленивой загрузки только, длится, пока представление деталей используется.

3
ответ дан 3 December 2019 в 07:40
поделиться

Как Вы сказали прежде, Вы не можете использовать границу HttpRequest, но можно понять то, что является "HttpRequest" в настольном приложении.

Позвольте мне объяснить. Обычно Ваш HttpRequest будет контроллером для действия, и Вы ограничите свою сессию тем определенным действием. Теперь в Вашем настольном приложении "контроллеры" (события) могут быть меньшего размера, но как @Jon сказал, окно может легко представить границу: Вы работаете с вещами там, позволяете им быть на Вашей сессии.

2
ответ дан 3 December 2019 в 07:40
поделиться

Может быть, мы можем придумать шаблон Command. Каждое знаменательное событие подпитывает и запускает команду и выполняет ее. Базовая реализация AbstractCommand.Execute () отвечает за инициализацию сеанса, упаковку транзакции, вызов конкретной реализации SomeCommand._Execute () и закрытие всего материала.

В любом случае, это далеко не агностик персистентности, как и должно быть, когда я загрузил свой объект и (хочу) иметь дело только с простыми экземплярами (здесь я особенно имею в виду ленивую загрузку).

Можно ли иначе реализовать какое-то поведение автоматического открытия / автоматического закрытия? Этого следует достичь, сделав уровень сохраняемости чувствительным к запросам более высоких уровней, даже в неявных случаях, таких как триггеры с отложенной загрузкой. Что касается закрытия соединения, то уровень сохраняемости может закрыться после заданного тайм-аута (10 секунд?) Бездействия БД. Я знаю, это не так уж сложно. Но это действительно сделало бы более высокие уровни агностическими.

Спасибо, Марчелло

0
ответ дан 3 December 2019 в 07:40
поделиться

Айенде недавно написал отличную статью на эту тему в MSDN .

11
ответ дан 3 December 2019 в 07:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: