Zwei wichtige Tipps:
[1] - Stellen Sie sicher, dass Ihr Projekt vollständig erstellt wurde, bevor Sie einen neuen Gerüstbefehl ausführen.
Andernfalls...
- Sie beginnen mit dem Schreiben einer Codezeile.
- Sie werden feststellen, dass in Ihrem Modell eine erforderliche DB-Spalte fehlt.
- Sie werden versuchen, es zu gerüsten.
- Zwanzig Minuten später werden Sie feststellen, dass Ihr Build (und Ihr Gerüstbefehl) fehlschlägt, weil Sie buchstäblich eine halb geschriebene Codezeile haben. Hoppla!
[2] - In die Quellcodeverwaltung einchecken oder eine Kopie erstellen:
- Ermöglicht die einfache Überprüfung der Änderungen.
- Ermöglicht bei Bedarf ein Rollback.
Sie können einige sehr ärgerliche Probleme mit Hühnchen und Eiern bekommen, wenn Sie Pech haben oder einen Fehler machen.
Andere Probleme:
Wenn Sie mehrere DLLs haben, stellen Sie sicher, dass Sie nicht in das falsche Projekt generieren . Die Meldung "Build fehlgeschlagen" kann aus vielen Gründen auftreten. Am dümmsten ist es jedoch, wenn Sie EFCore nicht in dem Projekt installiert haben, in dem Sie sich befinden.
In der Paketmanagerkonsole gibt es ein Default project
Dropdown-Menü, in dem wahrscheinlich Ihre neuen Dateien landen, wenn Sie eine erwartete Änderung verpassen.
Eine bessere Lösung, als daran zu denken, ein Dropdown-Menü festzulegen, besteht darin, den -Project
Schalter zu Ihrem Gerüstbefehl hinzuzufügen .
Dies ist der vollständige Befehl, den ich verwende:
Für EF Core 2
Scaffold-DbContext -Connection "Server = (lokal); Datenbank = DefenderRRCart; Integrierte Sicherheit = True; Trusted_Connection = True;" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir RRStoreContext.Models -context RRStoreContext -Project RR.DataAccess -force
Für EF Core 3
dotnet ef dbcontext scaffold "Server = tcp: XXXXX.database.windows.net, 1433; Anfangskatalog = DATABASE_NAME; Persist Security Info = False; User ID = USERNAME; Password = PASSWORD; MultipleActiveResultSets = False; Encrypt = True; TrustServerCert ; Verbindungszeitlimit = 30; " Microsoft.EntityFrameworkCore.SqlServer -o DB.Models --context-dir DB.Contexts --context RRDBContext --project RR.EF.csproj --force --use-database-names
Hinweis: -force überschreibt Dateien, entfernt jedoch keine nicht mehr vorhandenen. Wenn Sie Tabellen aus Ihrer Datenbank löschen, müssen Sie die alten Entitätsdateien selbst löschen (sortieren Sie im Explorer einfach nach Datum und löschen Sie die alten).
Vollständige Gerüstreferenz:
EF Core 2:
https://docs.efproject.net/de/latest/miscellaneous/cli/powershell.html#scaffold-dbcontext (this
EF Core 3:
https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet