Это вопрос Nhibernate, который беспокоил меня в течение некоторого времени ...
Если я смоделирую простой домен ввода заказа как:
public class Order: BaseEntity
{
public virtual Customer Customer {get; set;}
public Order(Customer customer)
{
...
}
}
public class Customer: BaseEntity
{
public virtual string Name {get; set;}
public virtual Order CreateOrder()
{
return new Order(this);
}
}
Хотя приведенный выше код работает для создания экземпляра Order, вновь созданный экземпляр не будет сохранен в БД, если только:
- BaseEntity или производный класс знают о NHibernate
сеанс (который нарушает POCO)
- Существует сервисный уровень (или хранилище), который вызывает ISession.Save () для
недавно созданный объект Order, который должен быть осведомлен о NHibernate
Таким образом, это заставляет меня поверить, что мои классы NHibernate POCO сами по себе не должны содержать каких-либо наших бизнес-правил (и должны быть сохранены только для свойств и конструкторов), но уровень обслуживания «над» моделью домена должен находиться там, где логика должна жить. Предположительно, этот сервисный уровень получит свою постоянную функциональность через внедрение зависимостей.
Кто-нибудь хочет подтвердить / опровергнуть мое утверждение о том, что бизнес-методы НЕ должны существовать в модели POCO?
Спасибо
David