我可以让NHibernate强制字符串属性为非空吗?
我知道我可以让NHibernate强制字符串属性为非空吗?,nhibernate,Nhibernate,我知道notnull属性。是否有一个用于强制执行字符串属性的最小长度?我不希望数据库中出现空字符串。我不知道映射文件中有什么东西可以让您这样做(在模式中我也看不到任何东西)。您可能可以使用NHibernate.IUserType定义一个自定义类型,并将逻辑构建到该类型中(如果字符串为空,则保存null)。构建IUserType的过程(很容易更改此示例代码以适合您) 另一个选项是在将实体保存到数据库之前利用并处理验证逻辑。您正在寻找的!有一篇博文展示了它的一些优点。这里有我的问题(),解释我为什么
notnull
属性。是否有一个用于强制执行字符串属性的最小长度?我不希望数据库中出现空字符串。我不知道映射文件中有什么东西可以让您这样做(在模式中我也看不到任何东西)。您可能可以使用NHibernate.IUserType定义一个自定义类型,并将逻辑构建到该类型中(如果字符串为空,则保存null)。构建IUserType的过程(很容易更改此示例代码以适合您)
另一个选项是在将实体保存到数据库之前利用并处理验证逻辑。您正在寻找的!有一篇博文展示了它的一些优点。这里有我的问题(),解释我为什么还没有使用它!说真的,我会查一查的。啊,我明白了!但是,检查和建设各自的项目绝对是值得的努力!哦,是的,还有James关于编写IUserType的建议——当您需要验证时,请不要这样做!当然,您可以确定永远不会在数据库中保存空字符串,但是如何处理错误呢?NHibernate验证器还为您提供了验证其他东西的能力,从长远来看,这可能是有益的!