0

現在、シャープ アーキテクチャ 1.9.6 を使用しています。そして、ドメイン クラスを監査する必要があります。このタスクには NHibernate Envers を使用するのが快適なようです。しかし、このライブラリを使用するようにシャープ アーキテクチャを構成できませんでした。いくつかのエラーがありましたが、1 つを除いてほとんどすべて解決しました。

エラーは次のとおりです。

たとえば、DB に "Document" という名前の POCO クラスと "Documents" テーブルがあります。また、テーブル「Documents_AUD」を作成し、属性 [Audited] をクラス「Document」に追加しました。そのため、Document クラスのオブジェクトが変更された場合、Envers は「Documents_AUD」テーブルにデータを追加する必要があります。これを行うには、Envers は別のクラス「Document_AUD」のオブジェクトを (動的に?) 作成します。そしてここにエラーが表示されます:「NHibernate.MappingException No Persister for Document_AUD」。

また、Document_AUD のマッピングをどこに追加すればよいかわかりません。

Envers を Sharp Arch で使用している人はいますか? 誰かが Envers + Sharp Arch の構成を共有できますか?

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

4

2 に答える 2

2

問題は、セッション ファクトリを構築する前に NHibernate.Envers の構成を行う必要がありますが、hbm マッピングを構成に追加した後に行う必要があることです。SharpArch では、NHibernateSession.Init(..) を呼び出すと、すぐにセッション ファクトリが構築され、ローカル キャッシュに追加されます。

解決策は、メソッドを持つ FluentNHibernate FluentConfiguration API を利用するために、NHibernate.Init メソッドを拡張することです。

ExposeConfiguration(Action<Configuration> action) 

これは流暢なマッピングを追加した直後に呼び出されます。

于 2012-05-10T14:20:36.260 に答える
0

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

于 2012-12-17T14:21:07.460 に答える