假设我有一个值对象类FullName,它用作Employee实体类中的一个属性。 FullName可能有中间名,昵称等;但从域的角度来看,我只想强调FullName的FirstName和LastName属性是重要的。nhibernate验证器用法
我想将其表示为EmployeeValidator的一部分:ValidationDef {Employee}对象,而不是属性。
我是否首先需要为FullName(即FirstAndLAstNameRequired)创建一个类验证程序,然后说Employee中的FullName属性是Valid(使用一些Loquacious形式的ValidAttribute)?
顺便说一句,看起来this documentation仍然是最好的,但它确实看起来过了三岁。我错过了更新的东西吗?
干杯,
Berryl
UPDATE
我还没有想通了这一点,但我发现什么是可能在这里NHib验证信息的最佳来源:http://fabiomaulo.blogspot.com/search/label/Validator
这里是一些伪代码来表达更好的问题:
/// <summary>A person's name.</summary>
public class FullName
{
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string MiddleName { get; set; }
public virtual string NickName { get; set; }
}
public class EmployeeValidator : ValidationDef<Employee>
{
public EmployeeValidator()
{
Define(x => x.FullName).FirstAndLastNameRequired(); // how to get here!!
}
}
UPDATE FOR DAV ID
public class FullNameValidator : ValidationDef<FullName>
{
public FullNameValidator() {
Define(n => n.FirstName).NotNullable().And.NotEmpty().And.MaxLength(25);
Define(n => n.LastName).NotNullable().And.NotEmpty().And.MaxLength(35);
// not really necessary but cool that you can do this
ValidateInstance
.By(
(name, context) => !name.FirstName.IsNullOrEmptyAfterTrim() && !name.LastName.IsNullOrEmptyAfterTrim())
.WithMessage("Both a First and Last Name are required");
}
}
public class EmployeeValidator : ValidationDef<Employee>
{
public EmployeeValidator()
{
Define(x => x.FullName).IsValid(); // *** doesn't compile !!!
}
}
我同意你的观点,基本上,除了你的第一行不能编译(尽管看起来只是需要的东西)。请参阅发布的最新更新。 – Berryl 2011-01-30 16:21:36