В процессе разработки моего приложения ASP.NET MVC + NHibernate я столкнулся с трудной (для меня) проблемой.
В моем домене проектов у меня есть объекты, давайте назовем их «статьями» (например, на сайте BBC или что-то в этом роде). Эта статья описана несколькими свойствами:
Авт
-Дата создания
-IsTemp
-IsApproved
Эти объекты могут находиться в нескольких состояниях:
- Temp - IsTemp == true, все остальное не важно
- Одобрено - IsApproved == true
- Ожидание - IsTemp == false && IsApproved == false && CreationDate + 10 days> DateTime.Now
- Истекло - IsTemp = false && IsApproved == false && CreationDate + 10 дней
(Приведенное выше описание является лишь примером - мой домен немного сложнее, но проблема идентична)
И вот вопрос: когда я должен обнаруживать состояния статей?
Я хочу, чтобы пользователь мог перечислить, например, все утвержденные статьи и т. Д.
- Должен ли я использовать фоновый процесс для обновления состояния всех статей каждые 10 минут? Это как-то воняет для меня.
- Должен ли я использовать свой класс Article (метод GetState или что-то в этом роде?) - тогда я теряю возможность запрашивать состояния по HQL, и я вынужден получать все сущности из БД для выполнения разбиения на страницы и обнаружения состояния
- Должен ли я подготовить запросы по конкретному состоянию? (Repository.GetAll (State.Temp)) - этот также вонючий, потому что я не хочу, чтобы мои бизнес-правила (которые могут изменяться / расширяться) просачивались в мой слой DAL.
- Должен ли я расширить функциональность NHibernate? Я никогда этого не делал, поэтому не знаю, реально ли это.
Это большая проблема для меня. Есть идеи?
С уважением,
Karczas