数据注释验证的性能

时间:2018-10-16 22:26:02

标签: c# asp.net asp.net-mvc data-annotations

我正在使用数据注释来验证后端中的导入数据。当大多数人使用它来验证前端字段(例如登录表单或应用程序表单)时,这似乎是个坏主意。但是,对于我的项目而言,这是一个了不起的想法。与其使用大量的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;
    }

但是,这只是冰山一角。我面临的另一个问题是验证的性能。数据注释可以帮助我和我的同事在很多方面理解验证,但是新验证的过程比旧验证要慢得多。有什么方法可以将数据注释保留在我的项目中并增强验证的性能?

0 个答案:

没有答案