데이터 주석 속성이 StringLength이고 설명 길이가 100 자로 설정된 설명 속성이있는 모델 클래스가 있습니다. 이 속성이 100자를 넘고 Entity Framework가이 속성을 저장하려고하면 다음 오류가 발생합니다.C# DataAnnotations StringLength 및 SubString을 사용하여 텍스트를 제거하는 방법
[StringLength(100, ErrorMessage = "Description Max Length is 100")]
public string Description { get; set; }
오류 :는
나는이 솔루션을 형성하는 데 도움이 있는지 확실하지 않습니다
". 검증은 자세한 내용은 'EntityValidationErrors'속성을 참조 하나 이상의 개체 실패",하지만 난 Entity Framework CTP5 및 코드 우선을 사용합니다.
설명이 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
이 질문에 추가해야하는 다른 태그가 있습니까? –
DataAnnotation에 대해 많이 모릅니다. 다른 옵션에 관해서는 getter/setter를 구현하고 setter에서 check/truncation을 수행 할 수 있습니다. – Rob
제안 해 주셔서 감사합니다. 방금 작업 한 것입니다. 나는 아마도 문제를 복잡하게 만든다. 그러나 다른 상황에서 유효성 검사 및 추가 문자를 제거하려는 다른 상황을 볼 수 있습니다. 내 WCF 응용 프로그램에서 추가 문자를 제거하고 오류를 발생시키지 않을 것이지만 ASP.NET이나 Win Forms와 같은 데이터 입력 응용 프로그램에서 사용자에게 유효성 검사 메시지를 보내고 싶습니다. –