Sharp Architecture + NHibernate Envers - PullRequest
       16

Sharp Architecture + NHibernate Envers

0 голосов
/ 19 декабря 2011

В настоящее время мы используем Sharp Architecture 1.9.6. И нам нужно провести аудит наших классов доменов. Кажется, удобно использовать NHibernate Envers для этой задачи. Но я не смог настроить Sharp Architecture для использования этой библиотеки. Были некоторые ошибки, но я решил почти все из них, кроме одной.

Ошибка в следующем:

Например, у меня есть класс POCO с именем «Документ» и таблица «Документы» в БД. Также я создал таблицу "Documents_AUD" и добавил атрибут [Проверено] к классу "Документ". Итак, если какой-то объект класса Document изменился, Envers должен добавить данные в таблицу "Documents_AUD". Для этого Энверс создает (динамически?) Объект другого класса - "Document_AUD". И здесь появляется ошибка: «NHibernate.MappingException No Persister для Document_AUD ".

И я не знаю, где добавить сопоставление для Document_AUD.

Кто-нибудь использует Envers с Sharp Arch? Может кто-нибудь поделиться Envers + Конфигурация Sharp Arch?

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 10 мая 2012

Проблема в том, что конфигурация NHibernate.Envers должна выполняться до создания фабрики сеансов, но после добавления отображений hbm в конфигурацию.В SharpArch при вызове NHibernateSession.Init (..) он немедленно создает фабрику сессий, добавляя ее в локальный кеш.

Решением было бы расширить метод NHibernate.Init, чтобы использовать FluentNHibernate FluentConfiguration API, который имеет метод

ExposeConfiguration(Action<Configuration> action) 

, который вызывается сразу после добавления отображений.

0 голосов
/ 17 декабря 2012

вы можете создать конфигурацию самостоятельно, настроить Envers для нее и передать ее в NHibernateSession.AddConfiguration () вместо вызова метода Init.

...