Здравствуйте, gandjustas, Вы писали:
G>Вот на этом месте начинают сыпаться все преимущества Domain Model.
Посмотрим.
G>Представляем себе код:
G>G>public class Customer
G>{
G> private ZipCodeValidationStrategy _zipCodeValidationStrategy;
G> ...
G> public string ZipCode
G> {
G> get {return _zipCode;}
G> set
G> {
G> if(_zipCodeValidationStrategy.Validate(value))
G> {
G> _zipCode = value;
G> }
G> }
G> }
G>}
G>
G>Вот теперь вопрос, как кастомер получает zipCodeValidationStrategy? Сам класс инстанцировать zipCodeValidationStrategy не может потому что от страны, а страна хранится где-то еще.
Где-то еще — это где? Я предполагал, что у кастомера и так есть страна. Тогда получить валидацию можно так:
ZipCodeValidationStrategyFacory.GetByCountryCode(this.CountryCode)
G>Это значит маппер должен уметь инжектить переданный ему инстанс стратегии в создаваемую сущность. С другой стороны при ручном создании инстанса надо инжектить такуюже стратегию.
G>Учитывая что не все мапперы позволяют перехватывать процесс создания объектов получается не очень хорошо.
А теперь рассказывай, как ты будешь с этим бороться:
update customer set zipCode = "любой невалидный zip";