DataAnnotationsを使用してクラスの手動検証を実行しようとしています。アプリケーションはコンソールアプリであるため、MVCは関与しません。.NET4.0を使用しています。
この記事からガイダンスを得ました。唯一の違いは、メタデータクラスを使用しようとしていることです。しかし、私が読んだ他のことは、これができることを示唆しています。
ただし、実行時に、オブジェクトは検証に合格します。私は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
nullであること、プロパティのみを検証することなど、他のバリエーションを試しました seq_num
。常に検証に合格し、検証結果はありません。テストは常に失敗します。
あなたが私に与えることができるどんなアドバイスにも感謝します。