Выполнение проверки аннотации данных - PullRequest
0 голосов
/ 17 октября 2018

Я использую аннотации данных для проверки импортированных данных в серверной части.Это кажется плохой идеей, в то время как большинство людей используют ее для проверки полей внешнего интерфейса (например, формы входа или формы заявки).Однако это потрясающая идея для моего проекта.Вместо того, чтобы использовать огромную кучу операторов 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;
    }

Однако,это всего лишь верхушка айсберга.Я сталкиваюсь с другой проблемой, которая заключается в выполнении проверок.Аннотации данных очень помогают мне и моим коллегам в понимании валидации, но новый процесс валидации намного медленнее, чем старый.Есть ли какой-нибудь возможный способ сохранить аннотации данных в моем проекте и повысить эффективность проверок?

...