Wie man mit DBContext umgeht, wenn man Ninject benutzt

Ich versuche, Ninject und OpenAccess zum ersten Mal zu verwenden. Bitte helfen Sie mir bei Folgendem. So sieht mein Projekt aus ...

public class ContentController : Controller
{
    private ContentService contentSvc;

    public ContentController(ContentService contentSvc)
    {
        this.contentSvc = contentSvc;
    }
}

Die folgende Klasse befindet sich unter einem Ordner in meiner Webanwendung.

public class ContentService
{
    private IContentRepository contentRepository;

    public ContentService(IContentRepository contentRepository)
    {
        this.contentRepository = contentRepository;
    }

    public void InsertContent(Content content)
    {
         contentRepository.InsertContent(content);
    }
}

Das folgende Repository gehört zu einer separaten Assembly.

public class ContentRepository : IContentRepository
{
    DBContext db;
    public ContentRepository(DBContext _db)
    {
        db = _db;
    }

    public void InsertContent(Content content)
    {
             db.Add(content);
    }
}   

So sieht die Ninject-Bindung aus.

kernel.Bind<ContentService>().To<ContentService>().InRequestScope();
kernel.Bind<IContentRepository>().To<ContentRepository>().InRequestScope().WithConstructorArgument("_db", new DBContext());

Alles funktioniert einwandfrei, wenn ich jeweils eine Seite abrufe. Ich benutze ein einfaches Tool 'XENU', um mehrere Seiten gleichzeitig abzurufen. In diesem Fall werden beim Abrufen mehrerer Seiten gleichzeitig Fehler mit DBContext angezeigt.

Ich bin nicht sicher, ob Ninject den DBContext in jeder ANFRAGE dosponiert? Ich erhalte verschiedene Fehler, z. 'Objektreferenz nicht auf eine Instanz eines Objekts festgelegt.', ODER 'ExecuteReader erfordert eine offene und verfügbare Verbindung. Der aktuelle Status der Verbindung ist offen. '

P.S.

Ich habe ContentService in einem Ordner in meiner MVC-Webanwendung. ContentRepository ist eine separate Assembly. Ich werde Geschäftslogik in ContentService hinzufügen und 'ContentRepository' nur für CRUD-Operationen verwenden. Lassen Sie mich auch wissen, ob diese Architektur in Ordnung ist oder ob es eine bessere Möglichkeit gibt, Dienste und Repositorys zu erstellen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage