我已经使用企业库验证模块一段时间了,取得了巨大的成功。但是,我遇到了试图将SelfValidation与Entity Framework Code First一起使用的障碍。以下是一些示例代码:
实体
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方法验证将不会触发 - 注释被检查,但我可能希望放置在SelfVAlidation方法中的任何自定义验证将被绕过。
是什么给出的?首先在模型/数据库中完美运行。
理查德