Моя цель - определить, существует ли лучший метод для использования TryValidateObject (..) со списком. Прямо сейчас я перебираю список элементов и использую метод TryValidateObject (..) для проверки. Предлагает ли класс Validator какие-либо методы для достижения этой цели без перебора каждого элемента?
Для повторного использования я создал служебный класс DataAnnotationsValidator для выполнения функций TryValidateObject.
DataAnnotationsValidator.cs
public class DataAnnotationsValidator
{
public static bool TryValidate(object @object, out ICollection<ValidationResult> results)
{
var context = new ValidationContext(@object, serviceProvider: null, items: null);
results = new List<ValidationResult>();
return Validator.TryValidateObject(@object, context, results, validateAllProperties: true);
}
}
Repository.cs
public IQueryable<TEntity> GetAll()
{
IQueryable<TEntity> list = _db.Set<TEntity>().AsNoTracking();
foreach (TEntity entity in list)
{
if (!DataAnnotationsValidator.TryValidate(entity, out ICollection<ValidationResult> results))
{
foreach (ValidationResult item in results)
{
throw new Exception("Error: " + item.MemberNames.FirstOrDefault().ToString() + " - " + item.ErrorMessage);
}
}
}
return _db.Set<TEntity>().AsNoTracking();
}