2010-07-12 36 views
0

我想在項目中使用NHibernate。我的所有域表都包含一個'CreatedBy'字段,它是Users表的外鍵。由於這是一個ASP.NET應用程序,我保存時關於用戶的唯一信息就是來自cookie的用戶名。NHibernate的 - 從用戶名保存創建者的用戶ID

獲取用戶ID並將其保存到域表的CreatedBy字段中的最佳方法是什麼?

例如,在應用程序中編寫代碼以便從用戶名中加載用戶,並在保存之前將其UserId屬性粘貼到域對象的CreatedBy屬性中會很簡單。然而,這將是笨拙的(我必須記住,只要堅持一個新創建的域對象就可以做到這一點),並且還會涉及到數據庫的兩次命中,我寧願避免這種命中。

什麼是最簡單和最優雅的方式來做到這一點?

感謝

大衛

回答

1

事件偵聽器是要走的路;你可以在這裏看到一個覆蓋這個的教程:Creating an Audit Log using NHibernate Events

+0

是的,它看起來好像是這個選項,或者使用映射文件中的元素來調用一個存儲過程。謝謝 – David 2010-07-12 13:18:48

+0

David,我會推薦攔截器方法,並讓所有適用的實體實現一個通用接口 - 這可能是最可用的DRY方法。我們爲此做了諸如IHaveCreationDate,IHaveLastModifiedDate等等。 – DanP 2010-07-12 13:25:13