Sharp Architecture + NHibernate Envers

时间:2011-12-19 09:46:40

标签: nhibernate fluent-nhibernate sharp-architecture nhibernate-envers

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

错误如下:

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

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

有人在锐拱中使用Envers吗?有人可以分享Envers + Sharp Arch配置?

非常感谢!

2 个答案:

答案 0 :(得分:2)

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

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

ExposeConfiguration(Action<Configuration> action) 

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

答案 1 :(得分:0)

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