1

私はNhibernateEnversを使用していますが、Enversに監査情報を別のデータベースに保存して、物事をよりクリーンで保守しやすくしたいと考えています。

私はこの流暢な構成を使用しています:

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

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

しかし、スキーマを作成しようとすると、HibernateExceptionが発生します(指定されたスキーマ名 "nhibernate_testAU"が存在しないか、使用する権限がありません)。

価値があるので、私のバックエンドはSQLServer2005です

4

2 に答える 2

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

チャック

于 2013-03-11T15:25:09.873 に答える
1

カタログ/データベースを手動で作成する必要があります。AFAIK-NHのSchemaExportは、データベース/カタログ(またはスキーマ)を作成しません。

于 2013-02-26T13:06:25.117 に答える