2016-06-25 8 views
0

私には、設計パターンが存在する可能性があると思われるSQL + ASP.NETの状況があります。SQL/LINQを使用したマルチユーザーASP.NET用のパターン

ユーザーが登録して自分のデータを入力できるサイトがあります。ユーザーは自分のデータだけを見ることができます。

私の質問です:このプロセスをどうにかして簡略化する方法はありますか?すべてのSQLコマンドは、ユーザーIDに基づいてフィルタリングする必要があります。ASP Webフォームでは、これを簡単に許可していません。おそらくLINQオブジェクトまたはユーザーIDパラメータを使用してSQL Serverに送信されるすべてのSQLコマンドを自動的に拡張できる類似のものを生成する方法はありますか?

+0

これを対応無しカスタム拡張は、*マルチテナントarchitとして知られていますecture *。私はあなたが[ここ](http://stackoverflow.com/q/2213006/861716)を始めて、その件に関するいくつかの読書をすることをお勧めしたいと思います。 –

答えて

0

お客様の要件はちょうどグローバルフィルタのように聞こえます。対応無しはORMからORMに変化するが、NHibernateは、それを実装する方法は、例えば:

http://nhibernate.info/doc/nhibernate-reference/filters.html

フィルタは、あなたのモデル記述の一部であり、エンティティレベルおよびナビゲーションプロパティレベルで適用することができます。

<class name="MyClass" ...> 
    ... 
    <filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/> 
</class> 

現在のセッションでフィルタを選択して有効にします。

making a global filter for entity framework

または既存のいずれかを使用します。

session.EnableFilter("myFilter").SetParameter("myFilterParam", "some-value"); 

エンティティフレームワークは、正確に面倒な作業が一度に封入されるように、あなたは自分のLINQ演算子をオーバーロード、むしろ、同じアプローチを以下のいませんグローバルフィルタ

https://github.com/zzzprojects/EntityFramework-Plus/wiki/EF-Query-Filter-%7C-Entity-Framework-Dynamic-Instance-and-Global-Filters

関連する問題