私はエンタープライズライブラリ検証ブロックをしばらく使用しており、大きな成功を収めています。ただし、最初にEntityFrameworkCodeでSelfValidationを使用しようとすると障害が発生しました。サンプルコードは次のとおりです。
実在物
namespace Data.Model
{
using System.ComponentModel.DataAnnotations;
using MetaData;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
[HasSelfValidation]
[MetadataType(typeof(PersonMetaData))]
public class Person
{
public int Id { get; set; }
public string Forename { get; set; }
public string Surname { get; set; }
[SelfValidation]
public void Validate(ValidationResults validationResults)
{
if (validationResults != null)
{
validationResults.AddAllResults(
ValidationFactory
.CreateValidator<PersonMetaData>()
.Validate(this));
}
}
}
}
検証アノテーション(いいえ、ベストプラクティスのバディクラスについての議論は必要ありません;)
namespace Data.MetaData
{
using System.ComponentModel.DataAnnotations;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
public class PersonMetaData
{
[Required(ErrorMessage = "Forename is required.")]
public string Forename { get; set; }
[Required(ErrorMessage = "Surname is required.")]
public string Surname { get; set; }
}
}
検証を呼び出す以外のすべての単純なもの、SelfValidationメソッドValidateは起動しません-アノテーションは検査されますが、SelfVAlidationメソッドに配置したいカスタム検証はバイパスされます。
何が得られますか?最初にモデル/データベースで完全に正常に動作します。
リチャード