Podczas próby tworzenia szkieletu za pomocą asp.net core to polecenie
scaffold-dbcontext "Data Source = (local); Initial Catalog = MyDb; Integrated Security = True;" Microsoft.EntityFrameworkCore.sqlserver -outputdir Models
Daje ten błąd.
scaffold-dbcontext: Termin „scaffold-dbcontext” nie jest rozpoznawany jako nazwa polecenia cmdlet, funkcji, pliku skryptu ani programu operacyjnego. Sprawdź pisownię nazwy lub, jeśli ścieżka została dołączona, sprawdź, czy ścieżka jest poprawna i spróbuj ponownie. W linii: 1 char: 1 + scaffold-dbcontext "Data Source = (local); Initial Catalog = MyDB; In ... + ~~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (scaffold-dbcontext: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException
Wypróbowałem tutaj rozwiązanie , ale u mnie nie działa.
Masz pojęcie, jaka może być przyczyna / lekarstwo?
źródło
Odpowiedzi:
U mnie najwyraźniej zadziałało, gdy uruchomiłem również w konsoli Menedżera pakietów:
Install-Package Microsoft.EntityFrameworkCore.Tools
Upewnij się również:
Aby mieć odniesienia do innych zależności (na przykład Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.SqlServer, Microsoft.EntityFrameworkCore.SqlServer.Design ...) w zależności od potrzeb.
Aby wybrać odpowiedni zestaw jako cel dla twoich poleceń w prawym górnym rogu konsoli PM (często jestem oszukiwany, zapominając o tym ...)
Inny problem, który napotkałem: z dbcontext znajdującym się w oddzielnej bibliotece klas, napotkałem następujący błąd:
Które udało mi się naprawić, ustawiając moją bibliotekę klas jako projekt startowy w VS (nie pytaj, dlaczego, ponieważ wydaje się to bez znaczenia, ale zadziałało).
Późna edycja, jest jeszcze coś, co trzeba wiedzieć: nie można uruchomić Scaffold-DbContext w odniesieniu do biblioteki klas, która jest ukierunkowana tylko na .Net Standard, należy również włączyć w niej aplikację netcoreapp, w przeciwnym razie Scaffold-DbContext będzie narzekać. Aby obsługiwać oba cele, edytuj csproj, aby wstawić:
<TargetFrameworks>netcoreapp2.2;netstandard2.0</TargetFrameworks>
Zamiast<TargetFramework>
sekcji.Po tym wszystkim będziesz mógł uruchomić
Scaffold-DbContext
wiersz poleceń z odpowiednimi argumentami i parametrami połączenia.źródło
to wszystko, co będzie działać
źródło
Upewnij się, że uruchamiasz VS jako administrator i masz zainstalowane następujące pakiety:
źródło
Miałem ten sam problem. W moim przypadku brakowało niektórych zależności, więc upewnij się, że masz następujące:
Mam nadzieję, że to pomoże. :)
źródło
Jeśli używasz .NetCore 2.2, poniższe polecenie działa jak urok dla mnie w wierszu polecenia lub w Git Bash. Przed uruchomieniem polecenia upewnij się, że jesteś bezpośrednio w folderze projektu.
Na przykład C: \ App \ ProjectName:
dotnet ef dbcontext scaffold "Server=.\;Database=Databasename;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Model
źródło
Zainstalowałem Microsoft.EntityFrameworkCore.Tools z NuGet Package Manager i było to widoczne w zainstalowanych pakietach. Ale ciągle otrzymywałem ten błąd.
Ponowne uruchomienie programu Visual Studio (2019 / wersja 16.4.4) naprawiło to za mnie.
źródło
Scaffold
polecenie jest częściądbcontext
polecenia w EF. Poniżej znajdują się szczegóły dotyczące sukcesuscaffold
:Wymagane referencje pakietu:
<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"/>
Zatem nasze polecenie dotyczące rusztowania powinno wyglądać następująco:
dotnet ef dbcontext scaffold "Server=localhost\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o OutputDirectory
Twoja
Server
wartość może się różnić w zależności od nazwy serwera Db. ZastąpMyDatabase
nazwą bazy danych, taką jakmaster
i,OutputDirectory
lokalizacją, w której chcesz, aby nowo utworzone klasy szkieletowe, takie jakModels
folder.źródło
Upewnij się, że używasz właściwej konsoli, „Konsoli menedżera pakietów”. Jest też konsola „Terminal”, która wygląda bardzo podobnie, ale nie działa dla tego polecenia. Konsolę Menedżera pakietów można znaleźć w menu Widok -> Inne Windows (od Visual Studio 2019, wer.16.6.5)
źródło
Niedawno napotkałem inną przyczynę tego błędu: sam NuGet był nieaktualny.
Aktualizacja NuGet rozwiązała problem.
Jeśli odpowiedź Devanathana nie działa, sprawdź, czy sam pakiet NuGet jest aktualny.
źródło
Dla mnie ... podczas kopiowania i wklejania polecenia z Microsoft Docs, z jakiegoś powodu dodano dodatkowe odstępy wokół łączników.
Usunięcie myślników naprawiło to:
źle:
Scaffold - DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer - OutputDir Models
dobry:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Dokumentacja mówi również, że jeśli pojawi się ten błąd, spróbuj ponownie uruchomić program Visual Studio.
https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db
źródło