1 つのデータベースを使用するプロジェクト (Web アプリケーション - ASP.NET MVC) に取り組んでいます。これまで、データベースは 1 つのクライアントのレコードを保持していましたが、マルチクライアント データベースに変換する必要があります。DB の各テーブルに列 (CompanyId など) を追加し、クエリでは特定の CompanyId を持つレコードのみを考慮するという考え方です。
残念ながら、プロジェクトは現在かなり開発されており、すべてのサービス呼び出し、すべての Linq クエリなどに余分なパラメーターを追加することは本当に面倒です。最初からこの方法(マルチクライアント)にアプローチする必要があることを私は知っていますが、今はそれに対してお金を払っています。
したがって、2つのオプションがあります。
単一データベース - 問題は、CompanyId = X を持つレコードのみを考慮し、すべての単一の Linq クエリで Where(i => i.CompanyId == X) を書き込まないように EF に指示する方法です。
1 つの DB = 1 つのクライアント - クライアントごとに 1 つのデータベースを作成するのはかなり良い解決策のようですが、私たちのプロジェクトでは、ユーザーは複数のデータベースにアクセスできます (クライアントは多くの会社に関連付けることができ、どの会社を希望するかのコンテキストで選択するように求められます)。彼はそれを自由に変更できます)。問題は、実行時に接続文字列を変更する方法が本当にわからないことと、この解決策が正しいかどうかわからないことです。
どちらのオプションが優れているか、どのようにアプローチすればよいか教えてください。前もって感謝します。