0

現在シャープアーキテクチャ1.9.6を使用しています。 ドメインクラスを監査する必要があります。 NHibernate Enversをこのタスクに使用するのは楽観的です。 しかし、このライブラリを使用するためにSharp Architectureを設定することはできませんでした。 いくつかのエラーがありましたが、私はこれらのほとんどすべてを解決しました。シャープアーキテクチャ+ NHibernate Envers

エラーは次である:

例えば、私は「文書」とテーブル「ドキュメント」DBで という名前のPOCOクラスを持っています。 また、テーブル "Documents_AUD"を作成し、属性 "[Audited] をクラス" Document "に追加しました。 Documentクラスのオブジェクトが変更された場合、Enversは "Documents_AUD"テーブルにデータ を追加する必要があります。 これを行うには別のクラスのオブジェクトを(動的に)作成します - "Document_AUD"。 そして、ここでエラーが表示されます: "NHibernate.MappingExceptionいいえPersist Document_AUD"。

そしてDocument_AUDのマッピングをどこに追加するのかわかりません。

誰かがSharp ArchでEnversを使用していますか?誰かがEnvers + シャープアーチ構成を共有できますか?

ありがとうございました!

+0

私はhavent S#Archを使用しましたが、nhibernateマップファイル(FluentMappingまたはhbm.xml)をどこかに作成してInitメソッドへのmappingassemblyとして与えなければならないと思います – Firo

+0

これは奇妙ですが(hbm.xml)例外が表示されます - "duplicate mapping entity" – barser

+0

nbm.xmlには "Document_AUD"のマッピングのみが含まれていますか?マッピングファイルが他のファイルと同じファイルにある場合、マッピングアセンブリの初期化は一度だけ行いますか? – Firo

答えて

0

自分で設定を作成し、それにEnversを設定し、Initメソッドを呼び出す代わりにNHibernateSession.AddConfiguration()に渡すことができます。

2

NHibernate.Envers設定は、セッションファクトリを構築する前に行う必要がありますが、設定にhbmマッピングを追加した後でなければなりません。 SharpArchでは、NHibernateSession.Init(..)を呼び出すと、直ちにセッションファクトリを構築してローカルキャッシュに追加します。

ソリューションは、右の流暢なマッピングを追加した後に呼び出されるメソッド

ExposeConfiguration(Action<Configuration> action) 

を持ってFluentNHibernate FluentConfigurationのAPIの使用を作るために、NHibernate.Initメソッドを拡張することです。

+1

あなたはどのように拡張機能を作成したの完全な例がありますか?私はどこから始めるべきかについて少し迷っています! – Rowan

関連する問題