質問: 現在のアプリケーションをマルチテナントアーキテクチャに移行しています。 1つのコードベースで、私は複数のテナントに対処する必要があります。私は単一のデータベース、複数のスキーマのアプローチを使用しています。各テナントには、デフォルトのスキーマに保存されているメタデータを含む個別のスキーマが割り当てられます。 アプリケーションはASP.NET MVCで構築されています。 Dapperを使用してSQL Serverに接続します。私は直接クエリとストアドプロシージャを使用してデータベースを呼び出す50以上の関数を持っています。関数を変更せずにテナントごとにダッパーが初期化されたときにスキーマを設定できる方法はありますか?
回答: SQL Serverでは、スキーマはユーザーに関連付けられています。各ユーザーには、少なくとも1つのデフォルトスキーマがあります。テナントをスキーマに関連付けることができます。つまり、 **テナント - >スキーマ - >ユーザー** SQL Connection文字列を動的に構築し、そのテナントに対応するSQLユーザーを渡します。この方法では、デフォルトのスキーマが自動的に指摘され、Dapperクエリを変更する必要はなく、動的クエリも作成する必要はありません。 注:接続プーリングの意味を確認することを忘れないでください。