ninject インジェクションでエンティティとリポジトリ パターンを使用してサイトを構築しました。私の問題は、接続が破棄されないように見えることです。私は約 30 個のリポジトリ (テーブルごとに 1 つ) を持っており、SQL の有効期限がすぐに切れます。コードはインジェクション前のインターフェースしか認識しないため、通常の using ステートメントは使用できません。(各コントローラーには、ninject を介して注入されるリポジトリ インターフェイス インスタンスがあります)。
私はネットを検索しましたが、私にとって正確な解決策を見つけることができませんでした. 誰でも私を助けてもらえますか?コード例:
これは、addBindings() の下の ninject コントローラーにあります。
ninjectKernel.Bind<IMovieRepository>().To<MovieRepository>().InRequestScope();
そして私のリポジトリの1つ:
public class MovieRepository : IMovieRepository, IDisposable
{
private Entities dataContext = new Entities();
public System.Data.Entity.DbContext DbContext
{
get { return dataContext ?? (dataContext = new Entities()); }
}
public void Dispose() { dataContext.Dispose(); }
}
および Global.asax ファイルで:
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory() as IControllerFactory);