2011-01-31 29 views
0

実行時に接続文字列を設定できる必要があります。設定ファイルからは、最も簡単な解決方法が望ましいでしょう。しかし、私はConnectionString.FromAppSettingもConnectionString.FromConnectionStringWithKeyも使用できません。私のデータアクセスアセンブリは、コンソールアプリケーション、フォーム、およびWebから参照されます。私のプロジェクトに「設定」を追加することはできますが、それはdllだけであり、app.configを実際のアプリケーションビルド先に持ち込むことはありません。nhibernate設定に接続文字列を挿入するにはどうすればよいですか?

これは珍しいことではありません。通常、これはどのように処理されていますか?これは、依存性注入(別のファイルから設定できるもの)を使用するときの主要な例ですか?私は '作業単位'オブジェクトに接続文字列を供給していますが、静的にconfigとsessionfactoryを一度しかビルドしないでください。

私は間違いなく必要に応じて明確にすることができますが、私は尋ねる最良の方法は不明です。

答えて

2

hibernate.cfg.xmlを使用できます(すべてのプラットフォームで動作します)。 は、別の方法としては、以下の

  1. 継承DriverConnectionProvider
  2. オーバーライドにConnectionStringプロパティを行うと、どこからでも接続文字列を読み取ることができます。
  3. 新しい接続プロバイダーをコードまたはxmlでnhibernate構成に指定します。

DriverConnectionProvider内でServiceLocationを使用することができます。また、アンハドインでEnhancedBytecodeProviderを使用することもできます。検索googleでbytecodeproviderとFabio Mauloを強化しました。

ここに例を示します。Dynamically change user info in connection string

+0

パーフェクト。私はちょうど正しい方向にナッジを必要としました、またはオブジェクトモデルの右側の部分に移動します。 – hometoast

+0

リンクが死んでいる、おそらくそれは[この記事で](http://nhibernate.info/doc/howto/various/dynamically-change-user-info-in-connection-string) – quetzalcoatl

関連する問題