.NET MVC 3 と PetaPoco を使用して共有データベースを持つマルチテナント アプリを構築しています。テナント ID は (他の情報と共に) ログイン時に FormsAuth Cookie に保存され、BaseController プロパティを介してすべてのコントローラーで使用できます。ほとんどのテーブル (つまり、メインの「テナント」テーブルを除く) には、TenantId 列が含まれています。
'WHERE TenantId = X' をフィーチャ テーブルのすべての CRUD に手動で追加する代わりに、これを実行直前にクエリに動的に追加する方法はありますか? つまり、テーブルのリストを維持し、クエリがそれらのテーブルの 1 つに対するものである場合は、TenantId フィルターを動的に追加しますか?
もちろん、フィルターを手動で追加する必要がなくなり、除外される可能性が減るという利点があります。NHibernate を使用した例を見つけましたが、これを転用できるとは思えません。違いが生じる場合に備えて、Ninjectを使用しています。