Пример приложения nhibernate winform
Я ищу любую документацию, приложение winform с открытым исходным кодом nhibernate, которое я могу изучить, или даже лучше рамки winform/nhibernate. Я видел его немного в Nhibernate contrib и NhAddins, но это все. В Интернете много, но очень мало о winform. Почему это?
Ответы
Ответ 2
Причина, по которой так мало примеров для winforms, является imho, управление сеансами намного сложнее в интеллектуальных клиентах, чем в веб-мире.
В веб-мире вы открываете ISession при запуске сеанса http и закрываете ISession при завершении сеанса http.
В интеллектуальном клиенте нет прямого перевода понятия сеанса http; несколько экранов одновременно открываются, некоторые сведены к минимуму, другие экраны открываются и закрываются все время, некоторые закрываются без сохранения изменений... вы получаете идею.
Я думаю, что есть три основные стратегии:
1 сеанс на приложение
Я бы держался подальше от этого. Помните, что если исключение, такое как исключение устаревшего сущности, выбрано вашим сеансом singleton, этот сеанс теперь неприменим. Ваше приложение в основном находится в doo doo.
Сессия на экран
Это немного лучше, вы избегаете того, чтобы ваше приложение спускалось вниз, если один сеанс взрывается. Однако некоторые экраны могут объединяться вместе в тот же блок работы. Им нужно поделиться одним и тем же сеансом или у вас возникнут проблемы , чтобы поделиться своими сущностями между экранами, поскольку постоянные объекты имеют сродство с сеансом, который их загрузил.
Стойкие разговоры
Я думаю, что это путь. Вы определяете услугу, которая содержит объем вашей единицы работы. Каждый раз, когда вы вызываете методы этой службы, правильная ISession обменивается невидимо для вас. Когда вы закончите свою службу, вы вызываете на нее другой метод, и сеанс удаляется.
Экземпляр службы может быть разделен между вашими экранами, поэтому они совместно используют сеанс. Одновременно можно открыть несколько сеансов. Все это делается с помощью методов ориентированного на перспективу программирования, вам не нужно предпринимать никаких действий, чтобы привязать ваши сервисы к атрибутам.
Это звучит довольно сложно, поэтому вы можете найти сообщения Fabio на нем здесь, здесь и здесь.
Существует реализация этого шаблона в unoffical nh addins. Это работает в Виндзоре, возможно, может преобразовать его в другие контейнеры IoC.
Ответ 3
У Fabio Maulo есть хорошая post относительно управления сеансом в приложении WinForms, есть также примерная загрузка приложения, связанная внизу.
Ответ 4
Проделана работа над обсуждением микширования форм nHibernate + Windows, написанных Sebasian Talamoni доступных здесь. Он включает в себя обсуждение + код.
Ответ 5
Я нашел этот, который намного более поздний. Он генерирует код и использует spring.net http://www.codeproject.com/KB/cs/NHibernateForWinforms.aspx