自分のプロジェクト(Webアプリケーション)でDI用にAutofacを使用しています。私は私のコンポーネント(repo1とrepo2)で登録していますAutofacを使用してInstancePerRequestと異なるコンテキスト
from repo1 in repository1.All()
join repo2 in repository2.All()
on repo1.SomeField = repo2.SomeField
.....
このように同じDB何かに2つの異なるテーブルを結合するLINQ式(すべてが())dbSet.AsQueryableオーバー単なるラッパー(ある)持っていますInstancePerRequest()を持つコンテナビルダー。
LINQコードでコードを実行すると、「指定されたLINQ式に異なるコンテキストに関連付けられたクエリへの参照が含まれています」というエラーが発生します。
私は、dbContextが(要求ごとに)InstancePerRequest()を介して登録されたコンポーネント間で共有されていると思っていました。
思考?
ありがとうございます!
dbContextはどのように作成されていますか?オートファックでも登録されていますか?もしそうなら、どのように登録されていますか? –
あなたはそれがWebアプリケーションだと言ったら、どんなタイプを意味しますか?これはWebApi、WCF、MVCなのですか?あなたのアプリケーションタイプに適切なオートファクトインテグレーションライブラリを使用していますか? –
"リポジトリ"コンストラクタは表示されません。正しく動作させたい場合は 'DbContext'に' PerRequest'を登録して、 "リポジトリ"にコンストラクタパラメータとして注入させる必要があります。そうすればうまくいくでしょう。 –