SQLサーバーバックエンドを備えたasp.net-MVCWebサイトがあります。100の異なるテーブルがあり、このサイトは300人の組織で機能します。
今度は別の組織で使用したいと考えていますが、サイトを拡張する方法に関する技術的な問題があります。要件のいくつかを次に示します。
バックグラウンド:
両方の組織で完全に再利用されるテーブルはたくさんありますが、その特定の組織に関連するレコードのみを取得するようにフィルターを追加する必要があるテーブルもたくさんあります 。
それを考えると、私は この質問のように、またはJoelのポッドキャストで説明されているように単一または複数のデータベースを決定する必要 があります(両方の組織を調べたいユーザーがいるため、可能であれば単一のデータベースに保持しようとしています)。マルチテナントデータベースの決定で共有する必要があります
ポッドキャストで説明されているように、例としてPeopleテーブルがあります。これは、Peopleテーブルをクエリするだけの場合は、クエリに「where Person.Org = "A」を追加するだけなので簡単です。ただし、 Peopleテーブルと直接または間接的に結合するクエリにも影響します。 Carテーブルがあり、Owner列( Peopleテーブルへの外部キーになります)があります。Carsのドロップダウンがある場合は、最初にPeopleと結合してから、そのフィルターを追加する必要があります(Select *車から)私はnhibernateを使用していますが、あなたはポイントを取得します
質問:
今の私の焦点は、この新しい組織をサポートするために、すべてのasp.net-mvcコントローラーアクションの周りに追加のスイッチを設定する方法を決定しようとしていることです。したがって、40個のコントローラーがあり、各コントローラーに10個のアクションがある場合、400個のアクションとすべてのページ(および特定のURLを指すようにすべてのビューとJavaScriptコードを更新する必要があります。最初に自分がどの「モード」であるかを判断する必要があります。 org1またはorg2のどちらを照会する必要があるかを判断するために
すべてのコントローラーアクションを実行して、新しいパラメーターや「組織名」などのルートを追加したくないので、何かアイデアがあるかどうかを確認したいと思いました。2つの異なるWebサイトを実行したとしても、これを単一のコードベースで実行したい場合は、このグローバルスイッチが必要になります。
すべてのコントローラーアクションにパラメーターを追加しないようにするための提案はありますか?