使用してテーブル値ユーザー定義関数
テーブル値関数は、.NET 4.5のベータ版でのみ利用可能(および最初のコードで使用可能ではない)です。それらを使用しても、LINQのすべてのクエリで関数を使用する必要があるため、where節を使用するのと同じであるため、依然として役に立ちません。それはいくつかの特別な複雑なクエリのために役立つことができますが、一般的にそれがあるストアドプロシージャ(しかし、我々はそうすることを避けるためにORMを使用しているとして、私たちは本当に、したくない)
を使用して
あなたが望むものではありません。
SQLを生成するために使用されたテンプレートを変更して、各文にwhere句を追加する方法。
完全に異なるレベルの抽象化である。
コントローラでLINQを生成するために使用されるテンプレートを変更する方法(MVCを使用する場合もあります)。
理想的なソリューションに近い。
public class MultiTenantAccess<T> where T : IMultitenant
{
private IDbSet<T> set;
...
public IQueryable<T> GetQuery(int tenantID)
{
return set.Where(e => e.TenantID == tenantID);
}
}
時には、これは一般的なリポジトリと呼ばれるものの中核であるが、それは本当にEFセットの周りだけのラッパーです:あなたは、単に次のようになりますいくつかのコードに設定するエンティティへのアクセスをラップする必要があります。直接DbSet
を使用する代わりに、GetQuery
を使用してデータストアに照会します。
でお答えします。ありがとうございます@ラディスラフ。 –
こんにちは@ラディスラフIMultitenantに含めるべきものを視覚化するのに苦労しています。余裕があるのですか?ありがとう:-) –
実際には、IMultitenantにはTenantIdが含まれていると思いますか?私は正しい行にいますか? –