2010-12-16 42 views
2

我有一個用戶類,我想更新。我的數據庫中有一個用戶表,其中有兩列:FirstName和Lastname,還有一個名爲DisplayName的計算列,它們將中間的空格連接起來。 NHibernate的映射顯示名稱是NHibernate更新導致選擇一行的計算列

<property name="DisplayName" type="string" generated="always"/> 

當我更新的用戶對象,並提交事務,NHibernate的運行額外的select語句只是在DisplayName屬性,我冒昧地保持對象和同步數據庫行。我不需要這個,因爲這個對象之後就不在範圍之內了。

有沒有什麼我可以告訴NHibernate,在這個時候不需要獲取更新的DisplayName?

問候, F.

+0

不能回答這個問題,但爲什麼不把這個計算作爲用戶對象的一部分? (例如連接Firstname和Lastname屬性的c#屬性)。這樣你就不必涉及數據訪問層。 – UpTheCreek 2010-12-16 15:58:16

+0

這是在映射,以便您可以選擇/搜索顯示名稱? – Phill 2010-12-16 16:01:22

+0

@UpTheCreek - 我打算說同樣的事情,但後來我想他可能會試圖反對它。我只做過「全名」類型的東西作爲類中的一個屬性,而不是作爲映射的一部分。 – Phill 2010-12-16 16:02:48

回答

2

generated="always"意思正是:「這是由DB每次我修改此行時間產生的值;請刷新它爲我」。

NH沒有像「只有在特定列發生變化時才刷新」的概念。

我認爲您應該在您的域模型中生成該值,而不是數據庫。

+0

這是當時的決定。謝謝大家! – Michali 2010-12-17 12:43:25