0

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

错误如下:

例如,我在 DB 中有名为“Document”的 POCO 类和表“Documents”。我还创建了表“Documents_AUD”并将属性 [Audited] 添加到类“Document”。因此,如果 Document 类的某些对象发生了变化,Envers 必须将数据添加到“Doc​​uments_AUD”表中。为此,Envers 创建(动态?)另一个类的 ovbject - “Document_AUD”。此处出现错误:“NHibernate.MappingException No Persister for Document_AUD”。

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

有人使用 Envers 和 Sharp Arch 吗?有人可以分享 Envers + Sharp Arch 配置吗?

非常感谢你!

4

2 回答 2

2

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

解决方案是扩展 NHibernate.Init 方法,以利用 FluentNHibernate FluentConfiguration API,它有一个方法

ExposeConfiguration(Action<Configuration> action) 

在添加流畅的映射后立即调用。

于 2012-05-10T14:20:36.260 回答
0

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

于 2012-12-17T14:21:07.460 回答