我正在使用S#arp架构使用NHibernate构建一个新系统。我是S#arp的新手,但对NHibernate很有经验。我真正希望找到的一个功能是在一个地方指定文本字段长度的好方法,这些字段长度将传递到需要知道长度的每个层。
换句话说,我使用Fluent映射来指定Whatsis对象的Name字段是50个字符。 (我关闭了自动化,因为我仍在编写大多数(如果不是所有)类的映射覆盖。我决定用ClassMap
编写完整的映射。我希望在映射中有足够的细节来生成完整的数据库模式它。)然后,当我使用hbm2ddl生成数据库模式时,我得到一个50个字符的字段长度。那很棒。但我也希望MVC验证器能够自动执行它。而且我太贪心了,我甚至想要NHibernate为Whatsis生成的代理对象知道它的setter中的长度,所以如果在代码中我应该分配一个太长的值,我会得到一个异常。
我是否有希望实现这一目标而不会让我的项目过于复杂?这是我第一次使用Fluent映射。我认为这是Fluent的一个功能,但看起来它毕竟不会这样。
答案 0 :(得分:0)
您需要使用NHibernate Validator,因为这是NHibernate hbm2ddl当前支持的唯一验证器框架。不幸的是,看起来没有人将NHibernate Validator和MVC3验证连接在一起。这是其他人有问题:
MVC 3, NHIbernate Validators & Message Interpolator
应该可以,因为我过去使用xVal(MVC3验证器的前身)和NHibernate Validator属性进行客户端验证,服务器端验证和模式生成。有人只需要投入一些TLC来让NHibernate Validator与MVC3验证器很好地配合。