我使用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