【发布时间】:2009-07-20 13:53:22
【问题描述】:
我正在使用 DDD 和 NHibernate 来持久化我的域对象。在我的数据库中,与实体相关的每个表都有四个额外的列(CreatedBy、UpdatedBy、CreatedDate、UpdatedDate)用于审计跟踪。我正在使用只允许保存聚合根的存储库模式。当 NHibernate 尝试将实体保存在聚合根上时,我收到 SQL DateTime 错误,因为实体没有设置其审核属性。 NHibernate 有没有办法在保存之前设置对象的属性?
这是一个小例子。我有一个 Order 对象,它是聚合根。我也有 OrderNote 对象,它们是订单的孩子。当我将 OrderNote 添加到订单然后保存订单时,会引发异常,因为 CreatedDate/UpdatedDate 设置为 DateTime.MinValue,这将导致 SQL DateTime 溢出。由于这些审计列是持久性的一部分并且与问题域无关,因此我不希望 Order 聚合根在添加注释时设置这些属性。审计列/属性应该只被持久性框架而不是域知道。我希望能够告诉 NHibernate 在保存或更新时设置这些属性。有没有办法做到这一点?
【问题讨论】:
标签: .net nhibernate persistence