2010-04-07 17 views
1

我們的幾個數據庫表中包含LastModifiedDate列。我們希望這些基於單個時間源保持同步。在這種情況下,我們最好的時間源是SQL Server本身,因爲只有一個數據庫服務器,但可能會有不同步的多個應用程序服務器。使用NHibernate插入/更新使用SQL服務器端默認值

我希望能夠使用NHibernate,但在更新或插入這些表上的行時,可以使用GETUTCDATE()或DEFAULT作爲列值。

想法?

編輯:基於缺乏反應,我只是相信這是NHibernate是不能做的。這讓我難過。

回答

2

將類屬性映射到表列時,請設置insert =「false」update =「false」。

+0

這可以防止它將INSERT和UPDATE中的行設置在一起。對於插入,DEFAULT值起作用。但是對於更新......我希望它實際發送「DEFAULT」或「GETUTCDATE()」作爲參數。否則,我需要使用數據庫觸發器,並且我想盡量避免。 – 2010-04-07 12:57:14

+0

如果您使用MS-SQL服務器,則不需要觸發器。修改數據庫表並在列屬性中設置default =「Getutcdate()」。 – 2010-04-07 13:04:45

+1

但這隻適用於INSERT語句。除非將該值設置爲關鍵字DEFAULT到您的語句中,否則SQL將不使用UPDATE的默認值。 NHibernate不會設置這個值。 – 2010-04-07 13:27:26

1

既然你想使用的服務器功能,用於INSERT和UPDATE時,你可能希望保留在內存中是一致的,我建議大家使用觸發器,然後設置:

insert="false" update="false" generated="always"

這樣,NHibernate將會保存時從數據庫中檢索插入/更新的值。