Где разместить бизнес-правила для запросов при использовании NHibernate? - PullRequest
1 голос
/ 13 сентября 2010

Еще новичок в NHibernate. Я использую NHibernate 2.1.2 и провайдера Linq.

Мне интересно, куда я должен поместить свою логику бизнес-правил. Например, у меня есть объект под названием Service со свойством DateTime. В моем веб-приложении я только хочу отображать / работать со службами, для которых DataTime менее 4 недель. Куда мне положить это правило?

Я начал создавать ServiceRepository с помощью метода IEnumerable GetServices (), который инкапсулировал эту логику, думая: «О! Каждый раз, когда мне нужен сервис, я пойду к этому методу!»

Конечно, возникают проблемы, когда мне нужно загрузить дочерние объекты моих служб. Я не хочу много перестановок одного и того же метода в моем хранилище при запросах к моей базе данных. На самом деле я совсем не хочу использовать репозитории, потому что я очень стараюсь прислушиваться к Совету Айенде , так как я все еще новичок в NHibernate.

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

Ответы [ 3 ]

0 голосов
/ 14 сентября 2010

Взгляните на Улучшенный объект запроса Фабио Мауло . Это демонстрирует хороший способ инкапсулировать запросы NHibernate, одновременно обеспечивая большую гибкость в их реализации.

0 голосов
/ 21 февраля 2012

Будет хорошо, если вы упомянете свою бизнес-логику в BLL и структура вашего проекта должна быть такой:

  1. BLL (уровень бизнес-логики). это содержит интерфейс, Сервисы, модели

  2. DLL (Dynmic link libery). это содержит Repsitory, Класс отображения Нибернатата

3.Website. (Добавить BLL, DLL ссылка)

0 голосов
/ 13 сентября 2010

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

При этом ваш оригинальный дизайн действителен.

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