2010-10-11 46 views
1

對此尚不完全確定,但是當我們將一個實體保存在NHibernate中,並且對於非空列(但具有DEFAULT值)的列包含字段值NULL時,操作將失敗。NHibernate可以被設置,以便它不INSERT字段是NULL?

我們通過在其上拋出一條INSERT語句來試驗相同的模式,完全忽略了NOT NULL字段(而不是將其顯式聲明爲NULL),並且工作正常。

這使我們相信NHibernate正在設置SQL語句,使得NOT NULL字段被顯式聲明爲NULL,從而導致INSERT錯誤。

有沒有辦法讓NHibernate從SQL語句中省略這個字段,如果它是NULL?對於它的價值,它是一個帶有DEFAULT('')的NOT NULL列的字符串字段。

+0

我應該提到DynamicInsert/Update具有性能影響。也就是說,它會爲您試圖保存的標有這種方式的每個對象重新生成(通常是複雜的)SQL文本。 – 2010-10-11 21:55:27

+0

這是正式注意,謝謝。幸運的是,我們正在研究相當簡單的實體,所以它不應該是一個完美的表現。希望至少。 :) – 2010-10-11 22:35:10

回答

2

您可以在您的類元素上使用dynamic-insert屬性(請參閱5.1.3. Class)。或者,如果您使用的是FluentNHibernate,則有一個名爲DynamicInsert(iirc)的方法,您可以在設置映射時調用該方法。

僅供參考,動態更新也有相應的屬性和Fluent功能。

相關問題