NHibernate如何处理非空字段的空值?

NHibernate如何处理非空字段的空值?,nhibernate,Nhibernate,我使用的是NHibernate,我对NHibernate如何处理非空字段的空值有些怀疑。我假设NHibernate在创建实体时会抛出异常,但我发现一些证据表明它会将字段设置为该类型的默认值 哪个是正确的?根据我的经验,它通常会指定一个默认值 如果您有一个具有DateTine属性的实体,并且您没有为其分配任何内容,那么它将分配一个默认日期,通常是数据库可以处理的最早日期 如果您有一个具有Enum属性的实体,它可以简单地分配Enum的第一个值(例如,Enum{Off=0,On=1},默认情况下为0

我使用的是NHibernate,我对NHibernate如何处理非空字段的空值有些怀疑。我假设NHibernate在创建实体时会抛出异常,但我发现一些证据表明它会将字段设置为该类型的默认值


哪个是正确的?

根据我的经验,它通常会指定一个默认值

  • 如果您有一个具有DateTine属性的实体,并且您没有为其分配任何内容,那么它将分配一个默认日期,通常是数据库可以处理的最早日期
  • 如果您有一个具有Enum属性的实体,它可以简单地分配Enum的第一个值(例如,Enum{Off=0,On=1},默认情况下为0)
  • 数字类型当然会得到一个0值

这就是我在应用程序中发现的行为。有人可能会以某种方式让它抛出异常,但我个人不需要它。

是的,我刚刚做了一个测试项目,我可以确认它就是这样工作的。现在,如果有人能告诉我如何改变这种行为,我会非常高兴!您可以使用NHibernate验证器强制执行您想要的任何规则: