Мнение
Мнение автора: на основании своего опыта я выступаю скорее за анемичную модель: когда сущность в основном контейнер для данных, почти не содержащий логику, и наборе команд/сервисов для взаимодействия с ними (и именно на команды ложиться ответственность за сохранение консистентности агрегатов). Пример поведения, располагаемого в ISetter:
У этого подхода еще есть плюс, связанный с Expression tree | Деревья выражений. А именно мы легко можем строить Expression (например для проекции или Update запроса) (открытые setter). | ||
| // Entity rules (interaction interface) IEntityServices<TEntity> { // Set rules (single point of editing). ITEntitySetter Setter { get; } // Specification rules ITEntityConditions Conditions { get; } // Discrimination union (OneOf) for invariants. IOneOf { get; } } | Specification |