EntityFrameworkCore

  • Hallo allerseits!


    Ich selber habe lange damit zugebracht zu schauen wie ich EntityFrameworkCore möglichst so nutzen kann wie EF6 (EntityFramework 6).

    Nach einer langen Zeit auf Google habe ich es mittlerweile auf eine recht einfache Art hinbekommen, die so jeder übernehmen kann.

    Ich spare mir die meisten Erklärungen, ich zeige die Schritte die ihr anwenden müsst.

    Inkompatibilität wenn schon andere MySQL Packages installiert sind, kann durchaus vorkommen, bitte vorher löschen.


    Erster Schritt

    Ladet folgende NuGet Packages herunter

    • Microsoft.EntityFrameworkCore
    • Microsoft.EntityFrameworkCore.Tools
    • Pomelo.EntityFrameworkCore.MySQL
    • Pomelo.EntityFrameworkCore.MySQL.Designer


    Der zweite Schritt

    Jetzt müsst ihr eurer Projekt entladen, und dann die CSProj Datei bearbeiten.

    Dort fügt ihr einfach folgende zwei Informationen ein:

    GenerateRuntimeConfigrationFiles ist ein Workaround was den Fehler behebt wenn er beim Datenbank-Model erzeugen den Net.Core nicht finden kann.

    Tools.DotNet... benötigen wir damit wir (dotnet ef...) nutzen können.


    Code
    1. <PropertyGroup>
    2. <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    3. </PropertyGroup>
    4. <ItemGroup>
    5.     <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
    6. </ItemGroup>


    Und jetzt der dritte Schritt

    Jetzt compilieren wir einmal das komplette Projekt (dafür das entladene Projekt wieder laden und dann neu erstellen).

    Wenn das erfolgreich war, können wir zum nächsten Schritt springen. Falls nicht, alle bisherigen MySQL Funktionen ausklammern,

    damit wir gleich das Model generieren können, müssen wir einmal compiliert haben.


    Jetzt der vierte Schritt, zusammgengefasst

    Wir öffnen jetzt Powershell oder CMD (am besten als Administrator).

    Jetzt navigieren wir zu unseren Projektfiles (wo die .csproj Datei liegt).


    Beispiel: "cd C:\Users\Administrator\ragemp_project\proj"

    Dort führen wir schnell noch einen kleinen Befehl aus - "dotnet restore"


    Um jetzt die Modelle zu generieren, müssen wir uns einen kleinen Befehl zusammenschreiben.

    Code
    1. dotnet ef dbcontext scaffold "Host=localhost;Port=3306;Database=vita;Username=root;Password=xxx" Pomelo.EntityFrameworkCore.MySql -o Model -f


    Hier die richtigen MySQL Daten hinterlegen.

    Wenn wir das jetzt ausführen, und wir keine Fehler erhalten, müssten im Projekt jetzt die Modelle liegen unter dem Ordner "Model".

    Wenn ihr Änderungen an der Datenbank durchführt, dann müsst ihr das nochmal ausführen, am besten schreibt ihr dafür eine .bat Datei!


    Der fünfte Schritt, ein Beispielcode

    Jetzt haben wir EntityFrameworkCore funktionsfähig in das Projekt integriert. Wir können jetzt auf die Datenbank zugreifen, siehe Beispiel!


    Code
    1. using System.Linq;
    2. using(var db = new Model.databasenameContext())
    3. {
    4. var accounts = db.Accounts.FirstOrDefault(x => x.SocialClub == player.SocialClub); // Accounts = Model
    5. if(accounts == null) return; // Account wurde nicht gefunden
    6. accounts.Online = 1;
    7. db.SaveChanges();
    8. }


    Bei Fragen einfach melden, oder falls ich etwas nicht richtig geschrieben habe einfach bescheid geben!


    Viel Spaß damit.


    Mit freundlichen Grüßen,


    Max Jackson


    Zitat

    Der Server startet nicht ohne die richtigen "runtimes", ich habe meinen Runtime-Ordner hochgeladen von der aktuellsten Server-Version (0.3.5)

    https://mega.nz/#!NJJzmTSa!eIN…t8fazAi4HSXWA4G9APw5d_E6E


    Bereits existierende Dateien einfach überspringen. :)

  • gatno

    Hat das Label C# hinzugefügt
  • gatno

    Hat das Label Anleitung/Tutorial hinzugefügt
  • gatno

    Hat den Titel des Themas von „[Tutorial/C#] EntityFrameworkCore“ zu „EntityFrameworkCore“ geändert.
  • Cooles Tutorial!

    Danke dafür.

    Aber wie kann ich bestimmte Werte aus der Datenbank auslesen?

    Zum Beispiel: Habe den User Tom mit der ID 3 (primary key).

    Von ihm möchte ich das Geld aus der Datenbank auslesen. Wie mache ich das?


    Gruß

  • Beziehst du dich auf die Ausführung in C# oder der eigentlichen Selektion der Daten (SQL)?