我使用DDD和NHibernate來堅持我的域對象。在我的數據庫中,與實體相關的每個表都有四個用於審計跟蹤的額外列(CreatedBy,UpdatedBy,CreatedDate,UpdatedDate)。我正在使用僅允許保存聚合根的存儲庫模式。當NHibernate試圖保存聚合根上的實體時,我得到一個SQL DateTime錯誤,因爲這些實體沒有設置它們的審計屬性。 NHibernate中有一種方法可以在保存之前設置對象的屬性嗎?NHibernate自動設置屬性保存
這是一個小例子。我有一個Order對象,它是聚合根。我也有訂單子項目的OrderNote對象。當我將OrderNote添加到Order並保存Order時,會拋出一個異常,因爲將CreatedDate/UpdatedDate設置爲DateTime.MinValue會導致SQL DateTime溢出。由於這些審計列是持久性的一部分,並且與問題域無關,因此我不希望訂單聚合根在添加註釋時設置這些屬性。審計列/屬性只應由持久性框架而不是域來知曉。我希望能夠告訴NHibernate在保存或更新時設置這些屬性。有沒有辦法做到這一點?
很好。這正是我要找的。我是NHibernate的新手,並沒有意識到這個功能。我確實有一個用受保護屬性實現的IAuditable接口,因此域無法看到它們。 – awilinsk 2009-07-20 14:54:35