还不完全确定这一点,但是当我们在NHibernate上保存一个实体时,该实体包含一个非NULL的列的字段值为NULL(但是具有DEFAULT值),操作失败。
我们通过在其上抛出INSERT语句尝试了相同的模式,完全省略了NOT NULL字段(而不是明确地将其声明为NULL),并且这很有用。
这让我们相信NHibernate正在设置SQL语句,使NOT NULL字段显式声明为NULL,这会导致INSERT错误。
如果它是NULL,有没有办法让NHibernate从SQL语句中省略这个字段?对于它的价值,它是带有DEFAULT('')的NOT NULL列的字符串字段。
答案 0 :(得分:2)
您可以在class元素上使用dynamic-insert属性(请参阅5.1.3. Class)。或者,如果您使用的是FluentNHibernate,则可以在设置映射时调用名为DynamicInsert(iirc)的方法。
仅供参考,动态更新也有相应的属性和Fluent功能。