DataAnnotations를 사용하여 클래스의 수동 유효성 검사를 수행하려고합니다. 응용 프로그램은 콘솔 응용 프로그램이므로 MVC는 관련되지 않습니다. NET 4.0을 사용하고 있습니다.DataAnnotations 기반 수동 유효성 검사가 작동하지 않는 이유는 무엇입니까?
나는 this article에서 내 지침을 얻었습니다. 유일한 차이점은 메타 데이터 클래스를 사용하려고한다는 것입니다. 하지만 제가 읽은 다른 것들은 이것이 할 수 있다고 제안합니다.
그러나 런타임에 개체는 유효성 검사를 통과합니다. 나는 MVC3에서 DataAnnotations를 사용했고, 나는 그들과 꽤 잘했다고 생각했지만, 나는 당황 스럽다.
무엇이 누락 되었습니까? System.ComponentModel.DataAnnotations 이외의 어셈블리가 필요합니까?
/// This is a partial-class addition to an Entity Framework class, so the properties are
/// defined in the EF .designer.cs file.
[MetadataType(typeof(EntityMetadata.tblThingMetaData))]
public partial class tblThing
{
}
메타 데이터 클래스 :
public partial class tblThingMetaData
{
[Required(AllowEmptyStrings = false, ErrorMessage = "Sequence number is required")]
[RegularExpression("A")]
public string seq_num { get; set; }
}
테스트 : 나는 다른 변화를 시도했습니다
[TestMethod]
public void VerifyValidationWorksOnEntities()
{
tblThing newThing = new tblThing()
{
seq_num = "B"
};
List<ValidationResult> results = new List<ValidationResult>();
bool validationResult = Validator.TryValidateObject(
newThing,
new ValidationContext(newThing, null, null),
results,
true);
Assert.AreNotEqual(0, results.Count);
Assert.IsFalse(validationResult);
}
: newThing.seq_num
그것은 항상 통과 등 만 seq_num
속성을 확인하는, 널 (null) 인 유효성 검사 결과가 없습니다. 검사는 항상 실패합니다.
나에게 줄 수있는 조언을 주신 것에 대해 많은 감사드립니다.