1

Web アプリケーションで 2 つのデータベースを使用します。1 つは米国にあり、もう 1 つはカナダにあります。お住まいの国に基づくデータのみが表示されます。エンティティはすでに米国用に作成されているため、SessionFactory オブジェクトの作成に関しては問題があると思います。nHibernate が同じエンティティを使用して CAN データベースのファクトリを作成しようとすると、次のエラーが発生します。

接続文字列設定が見つかりませんでした (connection.connection_string または connection.connection_string_name プロパティを設定します)

この問題を解決するにはどうすればよいですか?

更新: スタック トレースは次のとおりです。

NHibernate.Connection.ConnectionProvider.Configure(IDictionary 2 settings) at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary2 設定) で NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 プロパティ) で NHibernate.Cfg.Configuration.BuildSettings() で NHibernate.Cfg.Configuration.BuildSessionFactory() で FluentNHibernate. Cfg.FluentConfiguration.BuildSessionFactory() in d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs:line 93

4

2 に答える 2

0

NHibernate.Shards を試すことができます。まだ開発中ですが、おそらくあなたのために働いています。 http://nhcontrib.svn.sourceforge.net/svnroot/nhcontrib/trunk/src/NHibernate.Shards/

于 2009-11-10T20:11:51.913 に答える
0

ここでのアイデアですが、DAL が 2 つの異なるインフラストラクチャ セット上の 2 つの異なるデータ ソースに接続していることを考えると、CAN 用の NHibernate セッションの 1 つのインスタンスと USA 用の NHibernate セッションの 1 つのインスタンスをスピンアップしてから、クエリ後の結果? 1 つのセッションを使用して 2 つの絶望的なデータ ソースにクエリを実行することは、物理的に可能であっても、正しいアプローチとは思えません。ここでは、懸念の分離が適用されるべきだと思います。

プレゼンテーション -> サービス層 |-> projectName.dataAccess.usa.EntityRepository |-> projectName.dataAccess.can.EntityRepository

于 2009-11-11T19:06:40.860 に答える