none
.NET Core Web Anwendung Lifecycle des DB-Contexts RRS feed

  • Frage

  • Guten Abend,

    ich habe eine konzeptionelle Frage zur Verwendung des DB-Contexts in ASP.NET Core MVC bzw. WEBAPI. In allen mir bekannten Fällen propagiert MS die Vorgehensweise, den DB-Context zu den Services hinzuzufügen, und per DI an die Controller-Classes weiterzureichen. Nun habe ich gelesen, dass damit das Managen des Lifecycles und Multithreading sehr komplex bzw. unmöglich wird. Habe ich das falsch verstanden, oder ist da etwas dran? Was wäre ansonsten die Alternative? Jedes Mal im Controller einen neuen DB-Context kreieren:

    var MyContext = new ApplicationDbContext;

    ? Auf jeden Fall funktioniert der Code ^ bei mir nicht, da er wie auch beim Hinzufügen zu den Services in der Startup.cs options als Argumente haben möchte. Wie sollte dies dann möglichst gelöst werden?

    Mit freundlichen Grüßen,

    Bodenseecoder

    Dienstag, 16. Januar 2018 21:43

Antworten

  • Hallo,

    ich denke da hast Du etwas falsch verstanden. Probleme beim Multithreading bekommt man erst wenn man den DB-Context statisch benutzt. Wir hatten vor kurzem eine Diskussion darüber Link

    Je nach dem welchem Architekturmuster man folgt, geht man anders damit um. Hier im Forum ist es schwer auf solche Fragen zu antworten, da es sehr viele unterschiedliche Architekturmuster gibt. Ich kann dir aber ein Buch empfehlen das auch nur 68 Seiten hat und kostenlos von Microsoft zur Verfügung gestellt wird "E-Book DevOps Inselbuch 2017"

    Das was Du da aber beschreibst hat mit einem "normalen" DB-Context nix zutun. In der Startup.cs geht es um die Erstellung der DB für ASP.NET Identity. Diese DB und den Context verwaltet ASP.NET. Du solltest auch erstmal keine Veränderungen an dieser DB durchführen und sie so nutzen wie sie ist. Zugriff auf diesen Context erhälst Du über die zur Verfügung gestellten APIs. Willst Du noch andere Daten speichern, erstelle dir eine eigene DB. Wie Du das machst ist z.B. hier geschrieben Link. Diese andere DB würde ich ASP.NET gar nicht bekannt machen warum auch. Nutzt Du die DB und den Context für ASP.NET Identity über die APIs, brauchst Du dir um Multithreading keine sorgen machen


    Gruß Thomas
    Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
    Dev Apps von mir: Icon für UWP,  UI Strings
    Andere Dev Apps: UWP Community Toolkit Sample App



    Dienstag, 16. Januar 2018 23:30