Я использую аннотации данных для проверки импортированных данных в серверной части.Это кажется плохой идеей, в то время как большинство людей используют ее для проверки полей внешнего интерфейса (например, формы входа или формы заявки).Однако это потрясающая идея для моего проекта.Вместо того, чтобы использовать огромную кучу операторов if-else, теперь мой код намного легче читать и понимать.
Прежде чем я узнал об аннотациях данных, для каждой отдельной модели мне пришлось создать собственный класс проверки, который, как я уже сказал, содержит кучу операторов if-else.Это вызвало много путаницы в понимании логики валидации.
Теперь, с аннотациями данных, мне просто нужно использовать один единственный метод для валидации моделей.
public virtual string ValidateByAnnotations(ImportModel model)
{
string errorMessage = "";
//errorCount = 0;
var validationContext = new ValidationContext(model, serviceProvider: null, items: null);
var validationResults = new List<ValidationResult>();
var isValid = System.ComponentModel.DataAnnotations.Validator.TryValidateObject(model, validationContext, validationResults, true);
if (!isValid)
{
foreach (ValidationResult message in validationResults)
{
if (errorMessage.Contains(message.ToString())) { continue; }
if (errorCount < maxErrorAllowed)
{
errorCount++;
errorMessage += errorMessage.Length > 0 ? " " + message.ErrorMessage : message.ErrorMessage;
}
else { return errorMessage; }
}
}
return errorMessage;
}
Однако,это всего лишь верхушка айсберга.Я сталкиваюсь с другой проблемой, которая заключается в выполнении проверок.Аннотации данных очень помогают мне и моим коллегам в понимании валидации, но новый процесс валидации намного медленнее, чем старый.Есть ли какой-нибудь возможный способ сохранить аннотации данных в моем проекте и повысить эффективность проверок?