2009-03-31 10 views
4

背景:実行時にnHibernateマッピングを追加しますか?

nHibernateを使用しようとするとマッピングが失敗します。このアプリケーションはいくつかのアセンブリで構成されています。アセンブリの1つは有用なルーチンのライブラリであり、もう1つはライブラリを使用するアプリケーションコードです。ライブラリアセンブリはnHibernate構成に自身を追加しますが、他のアセンブリについては認識しないため、ライブラリアセンブリを追加しません。私のXMLマッピングファイルは、アプリケーションアセンブリ内にあります。私はそれがアプリケーションアセンブリで見ていないので、それを見つけることはないと思う。

質問: 設定に追加しなくても、任意のアセンブリのクラスにマップできますか?

もしそうでなければ、実行時にマッピングを追加できますか?

ありがとう

p.s.私は初期化時にアセンブリを追加できるように、基本的なライブラリーを変更し

4月3日'09 - 私はマッピングファイルが埋め込まれたリソースとして


アップデートをマークしたことを確認しました。それはちょうどうまくいくようです。

答えて

7

あなたのセッションファクトリを構築している現時点では、実行時にマッピングを追加することができます。

ISessionFactory sf = new Configuration() 
    .AddFile("Item.hbm.xml") 
    .AddFile("Bid.hbm.xml") 
    .BuildSessionFactory(); 

またはアセンブリと:あなたのコメントを再

ISessionFactory sf = new Configuration() 
    .AddAssembly("NHibernate.Auction") 
    .BuildSessionFactory(); 
+1

ありがとう:) 私はそのオプションを見ましたが、残念ながらそのコードはライブラリアセンブリにあります。他のアセンブリやマッピングについてはわかりません。 セッションの作成/開封後に追加できますか? – Jay

3

- あなたが構築されたら、いいえ、あなたは、マッピングを追加することはできませんセッションファクトリ。ただし、セッションファクトリを再作成することはできます。しかし、それは高価な操作(2番目ほど)があることに注意してください。

+0

ありがとう、それは私が考えたものを確認するのに役立ちます:) – Jay

関連する問題