我正在尝试创建一个数据库上下文验证器:我想验证我的实体条目,但是直到运行时我才知道我的验证器:
我的DbContext验证器如下所示:
public class DbContextValidator<TContext> : AbstractValidator<TContext>
where TContext: DbContext
{
public DbContextValidator(
EntitySetCollectionValidator<TContext> entitySetCollectionValidator)
{
this.RuleFor(c => c.ChangeTracker.Entries()
.Where(x => (int)x.State > (int)EntityState.Unchanged)
.Select(g => new EntityEntryContextPair<TContext>(g, c)))
.SetCollectionValidator(entitySetCollectionValidator);
}
}
通常我会直接设置集合验证器,但是由于集合验证器取决于要验证的实体,所以我不能这样做。 所以我创建了一个验证器,我想解析一个内部验证器,并使用它返回结果集:
public class EntitySetCollectionValidator<TContext>
: AbstractValidator<EntityEntryContextPair<TContext>>
where TContext: DbContext
{
protected IValidatorProvider _validatorProvider;
public EntitySetCollectionValidator(IValidatorProvider validatorProvider)
{
this.RuleFor(x => x.EntityEntry).Must(this.BeValid);
}
private bool BeValid(EntityEntryContextPair<TContext> contextPair,
EntityEntry arg)
{
var validator = this._validatorProvider.GetValidatorByEntityType(arg.Entity.GetType());
var results = validator.Validate(contextPair);
return results.IsValid;
}
}
我想返回FluentValidation结果,而不是返回布尔值“ results.IsValid”并汇总错误消息。
如何直接返回结果?