简体   繁体   中英

How to validate a single property with VAB / Entity framework?

I'm using Entity Framework and all the entities inherits from BaseObject:

public class BaseObject : IDataErrorInfo
{
    private string _validationMessage;

    public BaseObject()
    { 
        _validationMessage = string.Empty;
    }

    public void Validate()
    {
        Validator validator = ValidationFactory.CreateValidator(GetType());

        var validationResults = validator.Validate(this);

        if (validationResults.Count > 0)
        {
            StringBuilder message = new StringBuilder();

            foreach (var validationResult in validationResults)
            {
                message.Append(validationResult.Message);
                message.Append(Environment.NewLine);
            }

            _validationMessage = message.ToString();
            //throw new ValidationException(message.ToString());
        }
    }

    public string Error
    {
        get 
        {
            _validationMessage = string.Empty;

            this.Validate();

            return _validationMessage;
        }
    }

    public string this[string columnName]
    {
        get 
        { 
            _validationMessage = string.Empty;

            this.Validate();

            return _validationMessage;
        }
    }
}

BaseObjects implements the IDataErrorInfo interface so I can use the ErrorProvider in combination with a bindingsource. The problem with this code is that when one property is invalid, all the other properties are invalid too. So my question is, how can I solve this? I am using the Validation Application Block and I don't know how I can validate a single property.

@Tuzo:我认为可以通过使用PropertyValidationFactory.GetPropertyValidator方法来实现。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM