Cómo manejar DBContext al usar Ninject

Intento usar Ninject y OpenAccess por primera vez. Por favor, ayúdenme con lo siguiente. Así es como se ve mi proyecto …

public class ContentController : Controller { private ContentService contentSvc; public ContentController(ContentService contentSvc) { this.contentSvc = contentSvc; } } 

La siguiente clase se encuentra debajo de una carpeta en mi aplicación web.

 public class ContentService { private IContentRepository contentRepository; public ContentService(IContentRepository contentRepository) { this.contentRepository = contentRepository; } public void InsertContent(Content content) { contentRepository.InsertContent(content); } } 

El siguiente repository pertenece a un ensamblaje separado.

 public class ContentRepository : IContentRepository { DBContext db; public ContentRepository(DBContext _db) { db = _db; } public void InsertContent(Content content) { db.Add(content); } } 

Aquí se muestra cómo se ve el enlace de Ninject.

 kernel.Bind().To().InRequestScope(); kernel.Bind().To().InRequestScope().WithConstructorArgument("_db", new DBContext()); 

Todo funciona bien si busco una página a la vez. Estoy usando una herramienta simple ‘XENU’ para buscar varias páginas al mismo tiempo. Esto es cuando obtengo errores con DBContext obteniendo varias páginas a la vez.

No estoy seguro si Ninject está dosposando el DBContext en cada PETICIÓN? Recibo diferentes errores, por ejemplo, ‘Referencia de objeto no configurada para una instancia de un objeto’. O ‘ExecuteReader requiere una Conexión abierta y disponible. El estado actual de la conexión está abierto.

PD

Tengo ContentService debajo de una carpeta en mi aplicación web MVC. ContentRepository es un ensamblaje separado. Añadiré lógica empresarial en ContentService y usaré ‘ContentRepository’ solo para las operaciones CRUD. Además, avíseme si esta architecture está bien o si existe una forma mejor de crear servicios y repositorys.

Así es como haría tus enlaces de Ninject,

 kernel.Bind().ToSelf().InRequestScope(); kernel.Bind().ToSelf().InRequestScope(); kernel.Bind().To().InRequestScope(); 

Este patrón debería funcionar bien en el ejemplo anterior con EF y Ninject.