Wenn Sie versuchen, mit asp.net Core ein Gerüst zu erstellen, verwenden Sie diesen Befehl
scaffold-dbcontext "Datenquelle = (lokal); Anfangskatalog = MyDb; Integrierte Sicherheit = True;" Microsoft.EntityFrameworkCore.sqlserver -outputdir-Modelle
Gibt diesen Fehler.
scaffold-dbcontext: Der Begriff 'scaffold-dbcontext' wird nicht als Name eines Cmdlets, einer Funktion, einer Skriptdatei oder eines bedienbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens. Wenn ein Pfad enthalten war, überprüfen Sie, ob der Pfad korrekt ist, und versuchen Sie es erneut. In Zeile: 1 Zeichen: 1 + scaffold-dbcontext "Datenquelle = (lokal); Anfangskatalog = MyDB; In ... + ~~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (scaffold-dbcontext: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException
Ich habe hier die Lösung ausprobiert , aber sie funktioniert bei mir nicht.
Irgendeine Idee, was die Ursache / Heilung sein könnte?
quelle
Antworten:
Bei mir hat es anscheinend funktioniert, nachdem ich auch in der Package Manager-Konsole ausgeführt habe:
Install-Package Microsoft.EntityFrameworkCore.Tools
Stellen Sie außerdem sicher:
Andere Abhängigkeiten (z. B. Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.SqlServer, Microsoft.EntityFrameworkCore.SqlServer.Design ...) werden je nach Ihren Anforderungen referenziert.
So wählen Sie die richtige Baugruppe als Ziel für Ihre Befehle in der oberen rechten Ecke der PM-Konsole aus (ich werde häufig getäuscht, wenn ich sie vergesse ...)
Ein weiteres Problem, auf das ich gestoßen bin: Mit dem Datenbankkontext in einer separaten Klassenbibliothek ist der folgende Fehler aufgetreten:
Was ich beheben konnte, indem ich meine Klassenbibliothek als Startprojekt in VS festlegte (fragen Sie nicht warum, da es bedeutungslos erscheint, aber es hat funktioniert).
Bei der späten Bearbeitung gibt es noch etwas zu wissen: Sie können Scaffold-DbContext nicht nur für eine Klassenbibliothek ausführen. Net Standard, Sie müssen auch netcoreapp darin aktivieren, sonst beschwert sich Scaffold-DbContext. Um beide Ziele zu unterstützen, bearbeiten Sie das zu setzende csproj:
<TargetFrameworks>netcoreapp2.2;netstandard2.0</TargetFrameworks>
Anstelle von<TargetFramework>
Abschnitts.Nach alledem können Sie Ihre
Scaffold-DbContext
Befehlszeile mit den richtigen Argumenten und der Verbindungszeichenfolge ausführen .quelle
das ist alles was es funktionieren wird
quelle
Stellen Sie sicher, dass Sie VS als Administrator ausführen und die folgenden Pakete installiert haben:
quelle
Hatte das gleiche Problem. In meinem Fall fehlten mir einige Abhängigkeiten, stellen Sie also sicher, dass Sie die folgenden haben:
Hoffe das würde helfen. :) :)
quelle
Wenn Sie .NetCore 2.2 verwenden, funktioniert der folgende Befehl für mich entweder an der Eingabeaufforderung oder an Git Bash wie ein Zauber. Stellen Sie sicher, dass Sie sich direkt im Projektordner befinden, bevor Sie den Befehl ausführen.
Zum Beispiel C: \ App \ ProjectName:
dotnet ef dbcontext scaffold "Server=.\;Database=Databasename;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Model
quelle
Ich hatte Microsoft.EntityFrameworkCore.Tools von NuGet Package Manager installiert und es war in den installierten Paketen sichtbar. Aber ich habe diesen Fehler immer wieder bekommen.
Durch einen Neustart von Visual Studio (2019 / Version 16.4.4) wurde das Problem für mich behoben.
quelle
Scaffold
Befehl ist Teil desdbcontext
Befehls in EF. Nachfolgend finden Sie die Details für den Erfolgscaffold
:Paketreferenzen erforderlich:
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0"/> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0"/> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0"/> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.0.0"/>
Unser Gerüstbefehl sollte also so aussehen:
dotnet ef dbcontext scaffold "Server=localhost\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o OutputDirectory
Ihr
Server
Wert kann je nach Db-Servernamen abweichen. Ersetzen SieMyDatabase
durch Ihren Datenbanknamen wiemaster
undOutputDirectory
an den Ort, an dem Sie Ihre neu erstellten Gerüstklassen wieModels
Ordner möchten .quelle
Stellen Sie sicher, dass Sie die richtige Konsole verwenden, die "Package Manager-Konsole". Es gibt auch eine "Terminal" -Konsole, die sehr ähnlich aussieht, aber für diesen Befehl nicht funktioniert. Die Package Manager-Konsole finden Sie unter Ansicht -> Andere Fenster (ab Visual Studio 2019, Version 16.6.5).
quelle
Ich bin kürzlich auf eine andere Ursache für diesen Fehler gestoßen: NuGet selbst war veraltet.
Durch das Aktualisieren von NuGet wurde das Problem behoben.
Wenn die Antwort von Devanathan bei Ihnen nicht funktioniert, überprüfen Sie, ob NuGet selbst auf dem neuesten Stand ist.
quelle
Für mich ... beim Kopieren und Einfügen des Befehls aus den Microsoft-Dokumenten wurde aus irgendeinem Grund ein zusätzlicher Abstand um die Bindestriche hinzugefügt.
Durch Entfernen der Bindestriche wurde Folgendes behoben:
falsch:
Scaffold - DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer - OutputDir Models
gut:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
In den Dokumenten heißt es außerdem, wenn Sie diesen Fehler erhalten, versuchen Sie, Visual Studio neu zu starten.
https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db
quelle