NHibernate Envers-如何在单独的数据库上审核修订

本文关键字:数据库 Envers- 单独 NHibernate | 更新日期: 2023-09-27 18:01:06

我使用的是Nhibernate Envers,我希望Envers将审计信息保存在一个单独的数据库中,以保持更干净/更易于维护。

我正在使用这个流畅的配置:

var enversCfg = new NHibernate.Envers.Configuration.Fluent.FluentConfiguration()
enversCfg.Audit(GetDomainEntities())
nhCfg.SetEnversProperty(ConfigurationKey.DefaultCatalog, "nhibernate_testAU")

但是当我尝试创建模式时,我会得到一个Hibernate异常(指定的模式名称"nhibernate_testAU"要么不存在,要么你没有使用它的权限。(

值得一提的是,我的后端是SQLServer2005

NHibernate Envers-如何在单独的数据库上审核修订

除了实际创建数据库之外,我还将模式指定为"dbo"。

c.SetEnversProperty(ConfigurationKey.DefaultSchema, "dbo");  
c.SetEnversProperty(ConfigurationKey.DefaultCatalog, "MyCatalog_Audit");

此外,我有自己的RevisionEntity类,因此,我需要将目录和模式添加到我的hbm中。

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyAssembly" namespace="MyNamespace">
  <class name="MyRevisionEntity" table="REVINFO" catalog="MyCatalog_Audit" schema="dbo">
    <id name="Id" column="MyRevisionEntityId">
      <generator class="identity"/>
    </id>
    <property name="AuditDate"></property>
    <property name="UserName"></property>
    <!--modifiedEntityNames-->
    <set name="ModifiedEntityNames" table="REVCHANGES"  catalog="MyCatalog_Audit" schema="dbo">
      <key column="REV"/>
      <element column="ENTITYNAME" type="string"/>
    </set>
  </class>
</hibernate-mapping>

HTH-

卡盘

您需要手动创建目录/数据库。AFAIK-NH的SchemaExport不会为您创建数据库/目录(或模式(。