Использование NHibernate в библиотеке классов для веб-приложений и приложений Windows - PullRequest
4 голосов
/ 08 марта 2011

Я только что изменил свое приложение NHibernate для использования шаблона Unit of Work .Затем я продолжил этот урок до той части, где он начинает использовать HttpContext, чтобы определить, работает ли код в веб-приложении.При использовании Visual Studio 2010 я получаю сообщение об ошибке «Имя« HttpContext »не существует в текущем контексте».Поэтому я добавил ссылку на System.Web и импортировал пространство имен.Затем образец кода проверяет, является ли HttpContext.Current нулевым, чтобы определить, является ли это веб-приложением или приложением Windows.Это лучший способ сделать это?

Ответы [ 2 ]

4 голосов
/ 08 марта 2011

Я бы пошел по-другому.Создайте класс UnitOfWork с методами Begin и End.Тогда ваши приложения могут использовать их по своему усмотрению.Поэтому, если вы писали веб-приложение, вы можете захотеть начать единицу работы в BeginRequest и завершить единицу работы в EndRequest.Если вы пишете приложение для Windows, вы можете начать единицу работы при выполнении действия и завершить ее, когда закончите.

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

2 голосов
/ 08 марта 2011

Возможно, вы захотите проверить HttpRuntime.AppDomainId . Это никогда не должно быть нулевым, когда поток размещен в процессе веб-сервера. HttpContext может быть нулевым в зависимости от того, когда вы проверяете его в жизненном цикле события. Асинхронные методы также будут показывать нулевое значение HttpContext, так как они не работают в исходном веб-потоке.

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