0

DI (Ninject) を使用した汎用リポジトリ パターンを使用して、Entity Framework で ASP.NET MVC3 を使用しています。

他のサイトが接続するメイン プロジェクトがあります。メイン プロジェクトには、データベース内の一般的なテーブルに接続する独自のドメイン リポジトリがあります。それに接続する各サイトには、独自のデータベーステーブルに接続する独自のドメインリポジトリもあります。私の問題は、両方のサイト テーブルとメイン プロジェクト テーブルを組み合わせた複雑な linq クエリを実行しようとすると、同じクエリで 2 つの異なる dbcontext を使用できないとコードが叫ばないことです。そのため、他のリポジトリ テーブルで使用する前に、クエリを分割して 1 つのリポジトリ テーブル (ToList()) からデータを取得する必要があります。メイン プロジェクトはサイト プロジェクトの Dll として提供されるため、両方のリポジトリに同じ DbContext を使用することはできません。

4

1 に答える 1

2

あなたは自分で答えを出しました。1 つのクエリに対して複数のインスタンスを使用することはできませんDbContext(考えてみれば明らかです)。代わりに、単一の Web 要求ですべてのリポジトリに対して単一のインスタンスを使用します。Ninject にはPer Web Request ライフスタイルがあります。

于 2012-05-07T07:29:32.450 に答える