public virtual string this[string columnName] { get { if (validatableEntity == null) { return(string.Empty); } var exTestable = this as IExistTestable; if (exTestable != null && !exTestable.WasEdited) { return(string.Empty); } var results = validatableEntity.SelfValidate(); var message = results.Errors .Where(x => x.PropertyName == columnName || columnToPropertyMap != null && x.PropertyName == columnToPropertyMap.GetValueOrDefault(columnName)) .Select(x => x.ErrorMessage) .FirstOrDefault(); if (exTestable != null && exTestable.HasExistingValue) { message = exTestable.ThisValueExistsMessage; } return(message); } }