asp.net mvc - Cómo manejar DBContext al usar Ninject
asp.net-mvc telerik-open-access (1)
Así es como haría tus enlaces de Ninject,
kernel.Bind<DBContext>().ToSelf().InRequestScope();
kernel.Bind<ContentService>().ToSelf().InRequestScope();
kernel.Bind<IContentRepository>().To<ContentRepository>().InRequestScope();
Este patrón debería funcionar bien en el ejemplo anterior con EF y Ninject.
Estoy tratando de usar Ninject y OpenAccess por primera vez. Por favor ayúdame 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 está 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 repositorio pertenece a un conjunto separado.
public class ContentRepository : IContentRepository
{
DBContext db;
public ContentRepository(DBContext _db)
{
db = _db;
}
public void InsertContent(Content content)
{
db.Add(content);
}
}
Así es como se ve el enlace de Ninject ..
kernel.Bind<ContentService>().To<ContentService>().InRequestScope();
kernel.Bind<IContentRepository>().To<ContentRepository>().InRequestScope().WithConstructorArgument("_db", new DBContext());
Todo funciona bien si consigo una página a la vez. Estoy usando una herramienta simple ''XENU'' para obtener varias páginas simultáneamente. Esto es cuando obtengo errores con DBContext al buscar varias páginas a la vez.
No estoy seguro de si Ninject está dosificando el DBContext en cada SOLICITUD? Recibo diferentes errores, por ejemplo, ''Referencia de objeto no establecida en 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 bajo una carpeta en mi aplicación web MVC. ContentRepository es un conjunto separado. Agregaré la lógica de negocios en ContentService y usaré ''ContentRepository'' solo para las operaciones de CRUD. Además, avíseme si esta arquitectura está bien o si existe una mejor manera de crear servicios y repositorios.