我使用了nhibernate验证器并获得了近乎完美的解决方案。
我可以定义要验证的属性,并在预先保存时完成。但我有些情况下它不起作用。
假设我有一个名为person的对象,并且通过nhibernate我将地址(也是一个对象)映射为person的属性(实际上它是一个地址列表)。
当我保存此人时,我的地址未经过验证。
输入信息的表单由部分表单组成。如果地址验证可以添加到人员的验证列表中会很好,但这不是必需的。
我需要一个通用的解决方案,我不能用“手”验证,例如如果人然后验证地址......不知何故,验证者应该看到该物业背后有一个物体,我也必须验证。
更新:我正在寻找的是一种验证映射对象的方法(hasmany)。
答案 0 :(得分:1)
如果您正在尝试将输入验证放在这些类中,我认为您正在尝试这样做,我会反对它,因为这是业务逻辑。你在Hibernate中找到的任何东西都是为了确保数据库中的约束(即非空列)。
我建议您创建一个实用程序类或方法来为您进行输入验证。如果您需要向实体属性添加数据库约束,请务必这样做,但我不会依赖它们进行输入验证。
答案 1 :(得分:1)
切换到nhibernate验证器的最新版本后,验证适用于子类和映射类。与xVal 1.0一起,这是一个非常令人满意的解决方案。
现在我可以在每个属性上定义它应该被验证的内容(例如,对于正则表达式,长度等等),我通过xVal在客户端获取消息,在服务器端通过nHibernate Validator获取。实际上,他们共享验证模式和错误消息。
我建议在任何需要验证和消息传递的简单定义的nHibernate-Project中使用它。