Пример nhibernate приложения winform [закрывается]

Для пользователей NewRelic :

Если вы интегрировали в свой файл newrelic jar, это происходит, когда новая версия неактуальна.

Решение :

  • Обновите новую реликвную банку до последней версии. На затмении, просто щелкните правой кнопкой мыши на проекте и обновите newrelic. Или вы можете загрузить новую версию напрямую.
13
задан 23 July 2009 в 00:27
поделиться

5 ответов

Я нашел этот, гораздо более свежий. Он имеет генерацию кода и использует spring.net http://www.codeproject.com/KB/cs/NHibernateForWinforms.aspx

0
ответ дан 1 December 2019 в 23:15
поделиться

Идет работа по обсуждению смешивания форм nHibernate + Windows, написанных Себасианом Таламони , доступными здесь . Включает обсуждение + код.

1
ответ дан 1 December 2019 в 23:15
поделиться

У Фабио Мауло есть хороший пост об управлении сеансом в приложении WinForms, внизу также есть ссылка на загрузку примера приложения.

3
ответ дан 1 December 2019 в 23:15
поделиться

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

В веб-мире вы открываете ISession, когда начинается http-сессия, и закрываете ISession, когда http-сессия завершается.

В смарт-клиенте нет прямого перевода понятия http-сессии; множество экранов открыты одновременно, некоторые свернуты, другие постоянно открываются и закрываются, некоторые закрываются без сохранения изменений... вы поняли идею.

Я думаю, есть три основные стратегии:

1 сессия на приложение

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

Сессия на экран

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

Постоянные разговоры

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

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

Это звучит довольно сложно, поэтому ознакомьтесь с постами Фабио здесь, здесь и здесь.

Есть реализация этого паттерна в неофициальных nh addins. Это работает в Windsor, возможно, это можно преобразовать в другие IoC контейнеры.

7
ответ дан 1 December 2019 в 23:15
поделиться

Эта статья Орена Эйни является лучшим примером я видел, как реализовать настольное приложение Windows. Подробные сведения о шаблонах проектирования и передовых методах следует применять к приложениям WinForms или WPF \ Silverlight.

8
ответ дан 1 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

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