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

时间:2013-02-25 15:59:18

标签: c# nhibernate nhibernate-envers

我正在使用Nhibernate Envers,我希望Envers将审核信息保存在单独的数据库中,以使事情更清晰/更易于维护。

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

var enversCfg = new NHibernate.Envers.Configuration.Fluent.FluentConfiguration()

enversCfg.Audit(GetDomainEntities())
nhCfg.SetEnversProperty(ConfigurationKey.DefaultCatalog, "nhibernate_testAU")

但是当我尝试创建模式时,我得到一个HibernateException(指定的模式名称“nhibernate_testAU”要么不存在,要么您没有权限使用它。)

它的价值,我的后端是SQL Server 2005

2 个答案:

答案 0 :(得分:2)

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

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

另外,我有自己的RevistionEntity类,因此,我需要将目录和架构添加到我的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

答案 1 :(得分:1)

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