.NET MVC 3とPetaPocoを使用して共有データベースを使用してマルチテナントアプリを構築しています。 テナントID(他の情報とともに)は、ログイン時にFormsAuthクッキーに保存され、BaseControllerプロパティを介してすべてのコントローラで使用できます。ほとんどのテーブル(すなわち、メイン 'テナント'テーブルを離れて)には、テナントID列が含まれています。WHAT句を動的にペタポコと「注入」
フィーチャテーブルのすべてのCRUDに手動で 'WHERE TenantId = X'を追加するのではなく、実行する直前にこのクエリを動的に追加する方法はありますか?言い換えれば、おそらくテーブルのリストを維持し、それらのテーブルのいずれかのクエリがあれば、動的にTenantIdフィルタを追加しますか?
もちろん、フィルターを手動で追加する必要がなくなり、その結果、機会が減ります。私はexample using NHibernateを見つけました。私は再利用できるとは思っていません。違いを生む場合は、Ninjectを使用しています。
あなたのアプリにどのような種類のデータを保存しようとしていますか?このように動的SQLを使用すると、セキュリティ/ SQLインジェクションのリスクがある可能性があります。 –
一般的にはい、パラメータ化されたSQLを使用しています(デフォルトではPetaPocoが使用しています)。実際の質問には関係しないので、私は郵便でそれを言及しなかった。しかし、それを指摘してくれてありがとう:) – seekay
良い取引。私はPetaPocoに精通していないので、私はそれを見たときに最初にひどくなりました:) –