Я использую первый код EF 4.1 для вставки данных в базу данных SQL Server.Когда строковое свойство имеет значение, превышающее максимальное значение, установленное в отображении, EF выдает DbEntityValidationException
, в котором EntityValidationsErrors
содержит сведения о проблеме.
Есть ли какой-либо способ разрешить ошибки программно?
В частности, я хотел бы усечь рассматриваемое свойство, записать уведомление «Свойство X усеченное» для дальнейшего использования и повторить попытку SaveChanges()
.
Я создал пользовательский ValidationAttribute
проверяет длину аннотированного свойства, но не может определить, могу ли я изменить длину свойства одновременно.
public class TruncateAttribute : ValidationAttribute
{
public int TruncateLength { get; set; }
public TruncateAttribute(object truncateLength)
{
this.TruncateLength = (int) truncateLength;
}
protected override ValidationResult IsValid(object value,
ValidationContext validationContext)
{
var original = (string) value;
if (original.Length > this.TruncateLength)
{
value = original.Substring(0,
this.TruncateLength); // doesn't work
return new ValidationResult(
string.Format("{0} is longer than {1} characters",
validationContext.DisplayName, this.TruncateLength),
new[] {validationContext.MemberName});
}
else
{
return ValidationResult.Success;
}
}
}