У меня есть классы моделей, у которых есть свойство description с атрибутом аннотации данных StringLength, а длина установлена в 100 символов. Когда это свойство содержит более 100 символов и Entity Framework пытается сохранить это свойство, я получаю следующую ошибку.
[StringLength(100, ErrorMessage = "Description Max Length is 100")]
public string Description { get; set; }
Ошибка:
«Проверка не удалась для одного или нескольких объектов. Дополнительные сведения см. В свойстве« EntityValidationErrors »»
Я не уверен, помогает ли это в формировании решения, но я использую Entity Framework CTP5 и Code First.
Что я хочу сделать, так это если описание содержит более 100 символов, а затем удалить символы длиной более 100 символов, чтобы описание могло быть сохранено и ошибки не возникало.
Я полагаю, что смогу использовать атрибут DataAnnotation StringLength вручную, чтобы помочь мне определить действительную длину описания, а затем использовать SubString для удаления любых символов сверх допустимого количества.
Кто-нибудь знает, как использовать DataAnnotation в этой ситуации? Или есть другие варианты, которые доступны?
Обновление
Я сделал то, что предложил BrokenGlass, и вот моя реализация, если:
public static class DataAnnotation
{
public static int? GetMaxLengthFromStringLengthAttribute(Type modelClass, string propertyName)
{
int? maxLength = null;
var attribute = modelClass.GetProperties()
.Where(p => p.Name == propertyName)
.Single()
.GetCustomAttributes(typeof(StringLengthAttribute), true)
.Single() as StringLengthAttribute;
if (attribute != null)
maxLength = attribute.MaximumLength;
return maxLength;
}
}
int? maxLength = DataAnnotation.GetMaxLengthFromStringLengthAttribute(typeof(Car), "Description");
if(maxLength != null && car.Description.Length > maxLength)
car.Description = car.Description.Substring(0, maxLength.Value);
BarDev