我使用 Enterprise Library 验证块已经有一段时间了,并且取得了巨大的成功。但是,我在尝试将 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 方法 Validate 都不会触发 - 检查注释,但我可能想要放置在 SelfVALidation 方法中的任何自定义验证都将被绕过。
是什么赋予了?首先在模型/数据库中完美运行。
理查德