簡體   English   中英

如何使用VAB /實體框架驗證單個屬性?

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

我正在使用Entity Framework,並且所有實體都繼承自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實現IDataErrorInfo接口,因此我可以將ErrorProvider與綁定源結合使用。 此代碼的問題在於,當一個屬性無效時,所有其他屬性也無效。 所以我的問題是,我該如何解決呢? 我正在使用驗證應用程序塊,我不知道如何驗證單個屬性。

@Tuzo:我認為可以通過使用PropertyValidationFactory.GetPropertyValidator方法來實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM