2013-02-25 2 views
1

Я использую Nhibernate Envers, и я хочу, чтобы Envers сохранил информацию аудита в отдельной базе данных, чтобы сделать вещи более чистыми/более удобными для обслуживания.NHibernate 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

В дополнение к фактическому созданию базы данных, я указал схему на «dbo».

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

Кроме того, у меня есть свой собственный класс RevistionEntity, так, что мне нужно, чтобы добавить каталог и схему моей НВМ.

<?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> 

НТН

Чак

+1

с помощью 'c.SetEnversProperty (ConfigurationKey.DefaultCatalog "MyCatalog_Audit.dbo");' также работает. –

1

Вы должны вручную создать каталог/базу данных. AFAIK - NH SchemaExport не создает базу данных/каталог (или схемы) для вас.

Смежные вопросы