Я разрабатываю веб-приложение с asp.net mvc 3 и DDD.Для проверки моей доменной модели я использовал Свободную проверку.Это мой первый проект с быстрой проверкой, и я все еще изучаю и моделирую сущности.
Моя сущность Клиент имеет два свойства, которые должны быть уникальными в моей системе, это свойства электронной почты и CPF (это бразильский документи должны быть уникальными во всей системе).Я хотел бы знать, как я могу это сделать?
Итак, моя идея заключается в том, чтобы внедрить (по конструктору) мой репозиторий в мой класс проверки Customer и проверить его с помощью пользовательской проверки.Проверкой будет проверка с использованием репозитория, если в моей таблице есть запись с этим электронным письмом, отличным от Id (0 для вставок и реальный Id для обновлений ... Мне не нужно проверять обновляемую запись, потому что она 'всегда буду правдой)
Я пытаюсь что-то вроде этого:
public class CustomerValidator : AbstractValidator<Customer> {
protected ICustomerRepository Repository { get; set; }
// I intend to inject it by IoC with Unity.. is it possible ?
public CustomerValidator(ICustomerRepository rep)
{
this.Repository = rep;
// other properties
RuleFor(customer = customer.Email)
.EmailAddress()
.NotEmpty()
.Must(email = { return Repository.IsEmailInUse(email, ?); });
RuleFor(customer = customer.CPF)
.NotEmpty()
.Must(cpf = { return Repository.IsCPFInUse(cpf, ?); });
} }
Я не знаю, возможно ли это, вставить хранилище в валидатор, и как я могу получить идентификатор в .Mustрасширение метода?Или есть другой способ сделать это?