Я хочу добавить класс проверки в Entity, чтобы он мог проверить его действительность перед тем, как быть введенным в базу данных. (Проверка предназначена для бизнес-требований, а не для ограничений db).DI с Entity Framework Entity
У меня есть класс
public class MyEntity
{
private readonly IValidatorFactory _validatorFactory;
public MyEntity(IValidatorFactory validatorFactory)
{
_validatorFactory = validatorFactory;
}
//Entity Properties Removed For Clarity
public void Validate()
{
if(_validatorFactory == null)
{
throw new ArgumentNullException("Validator Factory was null, cannot validate this item");
}
var validator = _validatorFactory.GetValidator(this.ItemTypeId);
valid = validator.Validate();
}
}
Использование инъекции зависимостей, я изо всех сил, чтобы увидеть, как я могу чисто устранить зависимость, когда проект использует Ef6. Если я верну DbSet, он, конечно, не будет знать о требовании для валидатора. Требуется конструктор без параметров.
Как правило, это плохая идея использовать инъекции зависимостей в Entitties: http://stackoverflow.com/a/4836790/126014 –
Где вы называете Validate() для этих объектов? –
Validate будет использоваться, когда данные будут импортированы в систему, для чего завод может быть введен, и я мог бы иметь конструктор без параметров для выбора. Проблемы могут возникнуть позже, если сущность будет изменена и обновлена, потребовалось бы вызвать validate() на контроллере, прежде чем разрешить окончательное сохранение. – James