使用nHibernate时添加默认字段的时候可能会遇到的情况
在配置文件中在class节点中添加dynamic-insert="true" dynamic-update="true",从单词字面上理解动态插入、动态更新。作用是nhibernate在生成SQL语句的时候不会对没有改变的字段进行更新。
如果我们在插入数据的时候没有对我们要插入的变量赋值,直接调用SAVE方法的话,SQL字段中允许为NULL的字段就可以由sql赋予其默认值。因为如果不是可以为Null的话,nhibernate直接会给你个异常,告诉你有notnull字段没有初始化。
但如果有个表,某个字段我们就用registerDtae 用记录注册日期其中一个字段 默认的值通过sql的getdate()获得系统日期的话
运行时会直接跳异常,也就是上面所说的动态插入不起作用了。
C#创建datetime的时候datetime的默认值为0001-01-01 0:00:00,运行sql语句也直接报错,这时解决这个问题可以在property节点的insert="false" 和update="false"以后nHibernate在对这张表进行插入和更新的时候再也不会管这个字段了