0

同じスキーマを持つ別のデータベースがあります。接続されているクライアントに応じて、それらのいずれかに接続する必要があります。たとえば、ClientA が接続されている場合、DatabaseA に接続する必要があります。ClientB が接続されている場合は、DatabaseB に接続する必要があります。これで、プレゼンテーション層、サービス層、およびリポジトリ層の多層アプリケーションができました。いくつかのロジックを使用して、正しい接続文字列を取得します!

だから.. 今必要なもの。

そのクライアントの接続文字列を保存する場所がわかりません! セッションで考えていました。しかし、セッションに保存する場合、セッションはリポジトリで表示されないため、リポジトリレイヤーへの呼び出しごとに渡す必要があります。これは私が取ることができる最悪の解決策だと思います。

選択した接続文字列を、そのクライアントのグローバル変数のリポジトリ レイヤーだけにしたいと考えています。

提案?ありがとうございました

4

4 に答える 4

1

Web サイトのグローバル データを保持したい場合 - Application クラスに任意のデータを保存できます。詳細については、次のリンクで確認できます: http://www.asp.net/web-forms/overview/data- access/caching-data/caching-data-at-application-startup-cs アプリケーションの 個別の部分がある場合、共有データを xml ファイルに保持し、各アプリケーション ドメインで ConfigManager を作成するか、使用できます。データベース テーブル。

于 2015-03-17T12:25:55.157 に答える
1

すでに多くの議論が行われているので、私の経験に基づいて私の考えを共有したいと思います。

接続先のクライアントのリポジトリ層で解決された接続文字列を取得することを常にお勧めします。ただし、これはアプリケーション内でキャッシュできます。

アプリケーションに存在するすべてのビジネス エンティティを含むビジネス レイヤーが作成され、アプリケーションのすべてのレイヤーからアクセスできるようになります。

接続文字列の解決メカニズムがこのレイヤーに存在する場合 (もちろんキャッシュされます)、洗練されたデザインで使いやすいものになります。

于 2015-03-28T15:53:39.277 に答える
0

おそらく最善の方法は、ユーザー関連のテーブルがユーザー テーブルへの外部キーを持つ単一のデータベースを持つことです。

マルチテナント アーキテクチャの詳細については、このMicrosoft の記事を参照してください。このテーマに関するトピック全体を次に示します。asp.net mvc 複数の接続文字列

于 2015-03-17T11:06:54.290 に答える
0

アプリで ConnectionString リポジトリを作成しないのはなぜですか。ロジックに基づいて、正しい CS を取得します。ルックアップ テーブルのようなもので、静的です。ConnectionStrings を変更したい場合は、app.config を使用して、必要なときにいつでもそこから取得できます。

于 2015-03-17T11:07:33.710 に答える