NHibernate验证器是否可以获得验证一个或其他属性的验证器?在下面的示例中,需要FirstName或Surname。
[OneOrOther("Group")]
public string FirstName {get; set; }
[OneOrOther("Group")]
public string Surname {get; set; }
答案 0 :(得分:2)
是的,您可以在对象上创建一个属性来测试条件是否成立,然后使用其中一个nhibernate装饰器来检查它是否有效,即为真。
来自文档:
AssertTrue属性检查方法的计算结果为true(对于在代码而不是注释中表示的约束很有用)
到目前为止,这是实现您所描述的特定问题的最简单方法,您可以创建自定义类级别验证器,但它可能比您需要的工作更多。
答案 1 :(得分:2)
我认为this post(http://devlicio.us/blogs/billy_mccafferty/archive/2009/07/30/writing-a-custom-nhibernate-class-validator.aspx)可以在这种情况下很好地应用。我认为唯一的区别是样本使用互斥条件(一个或另一个,但不是两个 - XOR)。