Sharp Architecture + NHibernate Envers



目前我们使用的是Sharp Architecture 1.9.6。我们需要审计域类。使用NHibernate Envers来完成这个任务似乎很舒服。但是我无法配置Sharp Architecture来使用这个库。有一些错误,但我解决了几乎所有这些,除了一个。

错误如下:

例如,我有一个名为"Document"的POCO类和表"Documents"在DB。此外,我已经创建了表"Documents_AUD"和添加属性[审计]到"Document"类。因此,如果类Document的某个对象发生了变化,enver必须添加数据到"Documents_AUD"表。要做到这一点,Envers(动态地?)创建另一个类的对象"Document_AUD"。这里出现了错误:"NHibernate。MappingException否持久化Document_AUD"。

我不知道在哪里为Document_AUD添加映射。

有人用尖锐拱的Envers吗?有人能分享一下Envers +吗锐拱配置?

非常感谢!

问题是NHibernate。enver配置应该在构建会话工厂之前进行,但是在向配置中添加hbm映射之后。在SharpArch中,当调用nhibernatsession . init(..)时,它会立即构建会话工厂,并将其添加到本地缓存中。

解决方案是扩展NHibernate。Init方法,使用FluentNHibernate的FluentConfiguration API,它有一个方法

ExposeConfiguration(Action<Configuration> action) 

你可以自己创建配置,在其上配置Envers并将其传递给nhibernatsession . addconfiguration(),而不是调用Init方法。

最新更新