Это зависит от типа архитектуры, которую вы хотите.
- В доменно-управляемом дизайне вы создадите модель домена, которая будет иметь как данные, так и функциональность.
Это будет означать, что an Orderимеет свойство (или метод), который будет возвращать общую стоимость заказа на основе OrderLines. У Orderобъекта также будет метод, AddOrderItem(Product product, int amount)и он Orderбудет проверять, есть ли уже OrderLineэтот конкретный продукт.
В такой модели вы бы также имели объекты, которые не являются реальными объектами, например Repository для доступа к данным или Factoryдля создания объектов. Они называются доменными службами. Уровень приложений отвечает за вызов доменных служб (например, для извлечения объекта из базы данных), а затем он выполняет функции на объекте. Оно Application Layerдолжно быть максимально тонким.
Это хорошая статья о DDD которая объясняет эти концепции более подробно.
- Вы также можете использовать модель анемичного домена . Это означает, что ваши сущности состоят из свойств get / set и не содержат поведения. В таком дизайне ваш бизнес-уровень будет содержать поведение, такое как вычисление
Order цены и проверка на дубликат OrderLines.
Существуют разные мнения, является ли модель анемичной области плохой вещью. Лично я предпочитаю настоящую модель предметной области.
В этой статье описываются различия между анемичной и неанемичной моделью предметной области.