データ・リポジトリ内のメソッド呼び出しごとに複数のDbCOntextを作成するプロジェクトをリファクタリングしています。 したがって、HTTP要求ごとに1つのDbContextインスタンスを作成したいとします。Unityを使用してリクエストごとにDbContextの単一インスタンスを使用する方法
container.RegisterType<ApplicationDbContext>(new PerRequestLifetimeManager());
を、すべてのリポジトリのために:
私がやることを試みた
...
container.RegisterType<IBusinessRepository, BusinessRepository>(new InjectionConstructor(new ApplicationDbContext()));
container.RegisterType<ICountryRepository, CountryRepository>();
...
しかし、それはもちろん、リポジトリあたりDbContext()の新しいインスタンスを作成します。
私は
container.RegisterType<IBranchCategoryRepository, BranchCategoryRepository>(
new InjectionConstructor(container.Resolve<ApplicationDbContext>()));
を試してみました。しかし、それは私を与える:
PerRequestLifetimeManagerのみ HTTPリクエストのコンテキストで使用することができます。考えられる原因は、非asP.NETアプリケーション上で有効期間 を使用しているか、該当する同期コンテキストに関連付けられていない のスレッドで使用していることです。
どのようにして同じリポジトリに同じインスタンスを挿入できますか?
ありがとう、私はそれを仮定しましたが、私は処理されない例外があります。有効になったAPIトレースの後、私は何が起こっているのかを認識しました。依存関係が壊れている他のクラスがありました。私はあなたの答えを受け入れるでしょう、それは別の観点から私にそれを見させました。 –