NHibernate в C # приложении, как управлять сессией - PullRequest
4 голосов
/ 02 апреля 2011

Я новичок в мире NHibernate, и я начинаю создавать простое приложение Windows C Form, которое импортирует некоторые файлы XLS в БД (SQL2008), обрабатывает данные и затем экспортирует файл CSV. Я попытался найти несколько примеров того, как использовать и управлять сеансом NHibernate; некоторые из них полезны для веб-приложений. Я видел, что в приложении MVC сеанс NHibernate создается при запуске приложения, но я не могу понять, когда мне нужно создать сеанс NHibernate в приложении Windows Form.

Кто-нибудь может мне помочь? Спасибо!

Ответы [ 3 ]

2 голосов
/ 02 апреля 2011

По отзывам, я предлагаю вам посмотреть , используя SSIS для такой работы.Помимо того, что они предназначены для процессов ETL, подобных этим службам SSIS, они также могут быть повторно выполнены по мере необходимости, и нет нужды в собственном коде.Хотя, если вы хотите, нетрудно написать код .NET, при необходимости запускайте пакеты служб SSIS.Вот пример .Однако следует помнить, что API-интерфейсы служб SSIS по-прежнему часто содержат префиксы DTS.DTS (Data Transformation Services) является предшественником SSIS (SQL Server Integration Services), и большая часть технологии используется повторно.

2 голосов
/ 02 апреля 2011

Прежде всего, я не думаю, что вы используете правильный инструмент для работы.Но если вы все еще хотите использовать NH в учебных целях, вот мои советы:

Я очень рекомендую эту лекцию: http://msdn.microsoft.com/en-us/magazine/ee819139.aspx

Айенде говорит о большинстве вопросов, касающихся обработки сеансов ввеб-сценарии.То, что мы привыкли делать, это следовать образцу, подобному модели на форму.Модель содержит сеанс, но время жизни модели связано со временем жизни формы.Это предотвращает использование одного сеанса для каждого приложения, что, по мнению Фабио Мауло (NH Lead), является очень плохим решением. Это похоже на использование бомбы замедленного действия в вашем приложении.

Новые товары, это не единственный подход.Фабио Мауло и очень умный парень по имени Густаво Рингель придумали это:

http://fabiomaulo.blogspot.com/2009/01/aspect-conversation-per.html

http://gustavoringel.blogspot.com/2009/02/unhaddins-persistence-conversation-part.html

Хорошие новости - не вся теория, ООННаддинимеет полностью функциональный пример этой концепции.

HTH

0 голосов
/ 02 апреля 2011

Для начала я бы не порекомендовал NHibernate для этого сценария - импорт / экспорт и несколько хранилищ данных не совсем то, что нужно.

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

Для приложений с формами Windows вы можете взглянуть на шаблон ' единица работы '.Ваша сессия, вероятно, захочет следовать этому.

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