Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Narzędzia konsoli Menedżer pakietów (PMC) dla platformy Entity Framework Core wykonują zadania programistyczne w czasie projektowania. Na przykład tworzą migracje, stosują migracje i generują kod dla modelu na podstawie istniejącej bazy danych. Polecenia są uruchamiane wewnątrz programu Visual Studio przy użyciu konsoli Menedżer pakietów. Te narzędzia współpracują zarówno z projektami .NET Framework, jak i .NET.
Jeśli nie używasz programu Visual Studio, zalecamy zamiast tego narzędzia wiersza polecenia EF Core. Narzędzia interfejsu wiersza polecenia platformy .NET są międzyplatformowe i uruchamiane w wierszu polecenia.
Warning
W tym artykule jest używana lokalna baza danych, która nie wymaga uwierzytelnienia użytkownika. Aplikacje produkcyjne powinny korzystać z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Aby uzyskać więcej informacji na temat uwierzytelniania dla wdrożonych aplikacji testowych i produkcyjnych, zobacz Bezpieczne przepływy uwierzytelniania.
Instalowanie narzędzi
Zainstaluj narzędzia konsoli Menedżer pakietów, uruchamiając następujące polecenie w konsoli Menedżer pakietów:
Install-Package Microsoft.EntityFrameworkCore.Tools
Zaktualizuj narzędzia, uruchamiając następujące polecenie w konsoli Menedżer pakietów.
Update-Package Microsoft.EntityFrameworkCore.Tools
Weryfikowanie instalacji
Sprawdź, czy narzędzia są zainstalowane, uruchamiając następujące polecenie:
Get-Help about_EntityFrameworkCore
Dane wyjściowe wyglądają następująco (nie informuje o wersji używanych narzędzi):
_/\__
---==/ \\
___ ___ |. \|\
| __|| __| | ) \\\
| _| | _| \_/ | //|\\
|___||_| / \\\/\\
TOPIC
about_EntityFrameworkCore
SHORT DESCRIPTION
Provides information about the Entity Framework Core Package Manager Console Tools.
<A list of available commands follows, omitted here.>
Korzystanie z narzędzi
Przed użyciem narzędzi:
- Zapoznaj się z różnicą między projektem docelowym a projektem startowym.
- Dowiedz się, jak używać narzędzi z bibliotekami klas platformy .NET Standard.
- W przypadku projektów ASP.NET Core ustaw środowisko.
Projekt docelowy i startowy
Polecenia odnoszą się do projektu i projektu startowego.
Projekt docelowy jest również znany jako projekt, ponieważ jest to miejsce, w którym polecenia dodają lub usuwają pliki. Domyślnie projekt domyślny wybrany w konsoli Menedżer pakietów to projekt docelowy. Możesz określić inny projekt jako projekt docelowy przy użyciu parametru
.-ProjectProjekt startowy jest tym, który narzędzia kompilują i uruchamiają. Narzędzia muszą wykonywać kod aplikacji na etapie projektowania, aby uzyskać informacje o projekcie, takie jak ciąg połączenia z bazą danych i konfiguracja modelu. Domyślnie projekt startowy w programie Eksplorator rozwiązań jest projektem startowym. Możesz określić inny projekt jako projekt startowy przy użyciu parametru
.-StartupProject
Projekt startowy i projekt docelowy są często tym samym projektem. Typowy scenariusz, w którym są oddzielnymi projektami, jest następujący:
- Klasy kontekstu i jednostek platformy EF Core znajdują się w bibliotece klas platformy .NET.
- Aplikacja konsolowa platformy .NET lub aplikacja internetowa odwołuje się do biblioteki klas.
Można również umieścić kod migracji w bibliotece klas oddzielnie od kontekstu platformy EF Core.
Inne platformy docelowe
Narzędzia konsoli Menedżera pakietów współpracują z projektami .NET lub .NET Framework. Aplikacje, które mają model EF Core w bibliotece klas .NET Standard, mogą nie mieć projektu .NET lub .NET Framework. Dotyczy to na przykład aplikacji platformy Xamarin i Platformy Uniwersalnej Windows. W takich przypadkach można utworzyć projekt aplikacji konsolowej .NET lub .NET Framework, którego jedynym celem jest działanie jako projekt startowy dla narzędzi. Projekt może być fikcyjnym projektem bez rzeczywistego kodu — wystarczy podać cel dla narzędzi programowych.
Important
Xamarin.Android, Xamarin.iOS, Xamarin.Mac są teraz zintegrowane bezpośrednio z platformą .NET (począwszy od platformy .NET 6) jako .NET dla systemów Android, .NET dla systemów iOS i .NET dla systemu macOS. Jeśli kompilujesz już dziś te typy projektów, powinny one zostać uaktualnione do projektów w stylu zestawu SDK platformy .NET w celu zapewnienia ciągłej pomocy technicznej. Aby uzyskać więcej informacji na temat uaktualniania projektów platformy Xamarin do platformy .NET, zobacz dokumentację Uaktualnianie z platformy Xamarin do platformy .NET & .NET MAUI.
Dlaczego wymagany jest fikcyjny projekt? Jak wspomniano wcześniej, narzędzia muszą wykonywać kod aplikacji w czasie projektowania. W tym celu muszą używać środowiska uruchomieniowego .NET lub .NET Framework. Gdy model EF Core znajduje się w projekcie przeznaczonym dla platformy .NET lub .NET Framework, narzędzia EF Core pożyczają środowisko uruchomieniowe z projektu. Nie mogą tego zrobić, jeśli model EF Core znajduje się w bibliotece klas platformy .NET Standard. .NET Standard nie jest rzeczywistą implementacją platformy .NET; jest to specyfikacja zestawu interfejsów API, które muszą obsługiwać implementacje platformy .NET. W związku z tym platforma .NET Standard nie jest wystarczająca, aby narzędzia EF Core wykonywały kod aplikacji. Fikcyjny projekt używany jako projekt startowy udostępnia konkretną platformę docelową, w której narzędzia mogą załadować bibliotekę klas platformy .NET Standard.
środowisko ASP.NET Core
Środowisko dla projektów ASP.NET Core można określić w wierszu polecenia. Te i wszelkie dodatkowe argumenty są przekazywane do programu Program.CreateHostBuilder.
Update-Database -Args '--environment Production'
Typowe parametry
W poniższej tabeli przedstawiono parametry wspólne dla wszystkich poleceń platformy EF Core:
| Parameter | Description |
|---|---|
-Context <String> |
Klasa DbContext do zastosowania. Tylko nazwa klasy lub pełna nazwa kwalifikowana z użyciem przestrzeni nazw. Jeśli ten parametr zostanie pominięty, program EF Core znajdzie klasę kontekstu. Jeśli istnieje wiele klas kontekstu, ten parametr jest wymagany. |
-Project <String> |
Projekt docelowy. Jeśli ten parametr zostanie pominięty, domyślny projekt dla konsoli Menedżer pakietów jest używany jako projekt docelowy. |
-StartupProject <String> |
Projekt startowy. Jeśli ten parametr zostanie pominięty, jako projekt docelowy zostanie użyty projekt startowy we właściwościach rozwiązania. |
-Args <String> |
Argumenty przekazane do aplikacji. |
-Verbose |
Pokaż szczegółowe dane wyjściowe. |
Aby wyświetlić informacje pomocy dotyczące polecenia, użyj polecenia programu PowerShell Get-Help .
Tip
Parametry Context, Projecti StartupProject obsługują rozszerzanie tabulatorów.
Add-Migration
Dodaje nową migrację.
Parameters:
| Parameter | Description |
|---|---|
-Name <String> |
Nazwa migracji. Jest to parametr pozycyjny i jest wymagany. |
-OutputDir <String> |
Katalog służy do wyprowadzania plików. Ścieżki są względne względem docelowego katalogu projektu. Wartość domyślna to "Migrations" (Migracje). |
-Namespace <String> |
Przestrzeń nazw do użycia dla wygenerowanych klas. Domyślnie ustawiony na generowany z katalogu wyjściowego. |
Typowe parametry są wymienione powyżej.
Bundle-Migration
Tworzy plik wykonywalny w celu zaktualizowania bazy danych.
Parameters:
| Parameter | Description |
|---|---|
-Output <String> |
Ścieżka pliku wykonywalnego, który ma zostać utworzony. |
-Force |
Zastąp istniejące pliki. |
-SelfContained |
Należy również powiązać środowisko uruchomieniowe platformy .NET, aby nie trzeba było go instalować na maszynie. |
-TargetRuntime <String> |
Docelowe środowisko uruchomieniowe do przygotowania pakietu. |
-Framework <String> |
Struktura docelowa. Domyślnie zostaje ustawiony jako pierwszy w projekcie. |
Typowe parametry są wymienione powyżej.
Drop-Database
Usuń bazę danych.
Parameters:
| Parameter | Description |
|---|---|
-WhatIf |
Pokaż, która baza danych zostanie porzucona, ale nie upuść jej. |
-Connection <String> |
Parametry połączenia do bazy danych. Domyślnie jest to wartość określona w AddDbContext lub OnConfiguring. Dodano w programie EF Core 11. |
Typowe parametry są wymienione powyżej.
Get-DbContext
Wyświetla listę i pobiera informacje o dostępnych DbContext typach.
Typowe parametry są wymienione powyżej.
Get-Migration
Wyświetla listę dostępnych migracji.
Parameters:
| Parameter | Description |
|---|---|
-Connection <String> |
Parametry połączenia do bazy danych. Wartość domyślna to ta określona w „AddDbContext” lub „OnConfiguring”. |
-NoConnect |
Nie łącz się z bazą danych. |
Typowe parametry są wymienione powyżej.
Optimize-DbContext
Generuje skompilowaną wersję modelu używanego przez program DbContext.
Aby uzyskać więcej informacji, zobacz Kompilowane modele .
Parameters:
| Parameter | Description |
|---|---|
-OutputDir <String> |
Katalog do umieszczania plików. Ścieżki są względne względem katalogu projektu. |
-Namespace <String> |
Przestrzeń nazw do użycia dla wszystkich wygenerowanych klas. Domyślnie są generowane z głównej przestrzeni nazw i katalogu wyjściowego oraz CompiledModels. |
Typowe parametry są wymienione powyżej.
Note
Narzędzia PMC obecnie nie obsługują generowania kodu wymaganego do kompilacji nativeAOT i wstępnie skompilowanych zapytań.
W poniższym przykładzie użyto wartości domyślnych i działa, jeśli w projekcie znajduje się tylko jeden DbContext element:
Optimize-DbContext
Poniższy przykład optymalizuje model dla kontekstu o określonej nazwie i umieszcza go w osobnym folderze i przestrzeni nazw:
Optimize-DbContext -OutputDir Models -Namespace BlogModels -Context BlogContext
Remove-Migration
Usuwa ostatnią migrację (przywraca zmiany kodu, które zostały wykonane na potrzeby migracji).
Parameters:
| Parameter | Description |
|---|---|
-Force |
Przywróć migrację (wycofaj zmiany zastosowane do bazy danych). |
-Connection <String> |
Parametry połączenia do bazy danych. Domyślnie jest to wartość określona w AddDbContext lub OnConfiguring. Dodano w programie EF Core 11. |
-Offline |
Usuń migrację bez nawiązywania połączenia z bazą danych. Dodano w programie EF Core 11. |
Typowe parametry są wymienione powyżej.
Note
Parametrów -Offline i -Force nie można używać razem, ponieważ -Force wymaga połączenia z bazą danych w celu sprawdzenia, czy migracja została zastosowana przed jego przywróceniem.
Scaffold-DbContext
Generuje kod dla DbContext oraz typy encji dla bazy danych. Aby Scaffold-DbContext wygenerować typ jednostki, tabela bazy danych musi mieć klucz podstawowy.
Parameters:
| Parameter | Description |
|---|---|
-Connection <String> |
Parametry połączenia do bazy danych. Wartość może być name=<nazwa ciągu połączenia>. W takim przypadku nazwa pochodzi ze źródeł konfiguracji skonfigurowanych dla projektu. Jest to parametr pozycyjny i jest wymagany. |
-Provider <String> |
Dostawca, którego należy użyć. Zazwyczaj jest to nazwa pakietu NuGet, na przykład: Microsoft.EntityFrameworkCore.SqlServer. Jest to parametr pozycyjny i jest wymagany. |
-OutputDir <String> |
Katalog, w którym umieszczane są pliki klas encji. Ścieżki są względne względem katalogu projektu. |
-ContextDir <String> |
Katalog, w którym umieszczony zostanie plik DbContext. Ścieżki są względne względem katalogu projektu. |
-Namespace <String> |
Przestrzeń nazw do użycia dla wszystkich wygenerowanych klas. Domyślnie są generowane z głównej przestrzeni nazw i katalogu wyjściowego. |
-ContextNamespace <String> |
Przestrzeń nazw do użycia dla wygenerowanej DbContext klasy. Uwaga: zastępuje wartość -Namespace. |
-Context <String> |
Nazwa DbContext klasy do wygenerowania. |
-Schemas <String[]> |
Schematy tabel i widoków do generowania typów jednostek. Jeśli ten parametr zostanie pominięty, zostaną uwzględnione wszystkie schematy. Jeśli ta opcja jest używana, wszystkie tabele i widoki w schematach zostaną uwzględnione w modelu, nawet jeśli nie zostaną jawnie dołączone przy użyciu -Table. |
-Tables <String[]> |
Tabele i widoki do generowania typów jednostek. Tabele lub widoki w określonym schemacie można uwzględnić przy użyciu formatu "schema.table" lub "schema.view". Jeśli ten parametr zostanie pominięty, zostaną uwzględnione wszystkie tabele i widoki. |
-DataAnnotations |
Użyj atrybutów, aby skonfigurować model (jeśli to możliwe). Jeśli ten parametr zostanie pominięty, używany jest tylko płynny interfejs API. |
-UseDatabaseNames |
Użyj nazw tabel, widoków, sekwencji i kolumn dokładnie tak, jak są wyświetlane w bazie danych. Jeśli ten parametr zostanie pominięty, nazwy baz danych zostaną zmienione tak, aby były bardziej zgodne z konwencjami stylu nazw języka C#. |
-Force |
Zastąp istniejące pliki. |
-NoOnConfiguring |
Nie generuj DbContext.OnConfiguring. |
-NoPluralize |
Nie używaj pluralizatora. |
Typowe parametry są wymienione powyżej.
Example:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Przykład, który generuje szkielet tylko dla wybranych tabel i tworzy kontekst w osobnym folderze z określoną nazwą i przestrzenią nazw:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables "Blog","Post" -ContextDir Context -Context BlogContext -ContextNamespace New.Namespace
Poniższy przykład odczytuje parametry połączenia przy użyciu konfiguracji.
Scaffold-DbContext "Name=ConnectionStrings:Blogging" Microsoft.EntityFrameworkCore.SqlServer
Script-DbContext
Generuje skrypt SQL z obiektu DbContext. Pomija wszelkie migracje.
Parameters:
| Parameter | Description |
|---|---|
-Output <String> |
Plik do zapisania wyniku. |
Typowe parametry są wymienione powyżej.
Script-Migration
Generuje skrypt SQL, który stosuje wszystkie zmiany z jednej wybranej migracji do innej wybranej migracji.
Parameters:
| Parameter | Description |
|---|---|
-From <String> |
Rozpoczynanie migracji. Migracje mogą być identyfikowane według nazwy lub identyfikatora. Numer 0 jest specjalnym przypadkiem, co oznacza przed pierwszą migracją. Wartość domyślna to 0. |
-To <String> |
Zakończenie migracji. Domyślnie jest to ostatnia migracja. |
-Idempotent |
Wygeneruj skrypt, który może być używany w bazie danych w dowolnej migracji. |
-NoTransactions |
Nie generuj instrukcji transakcji SQL. |
-Output <String> |
Plik do zapisania wyniku. Jeśli ten parametr zostanie pominięty, plik zostanie utworzony z wygenerowaną nazwą w tym samym folderze co pliki środowiska uruchomieniowego aplikacji, na przykład: /obj/Debug/netcoreapp2.1/ghbkztfz.sql/. |
Typowe parametry są wymienione powyżej.
Tip
Parametry To, Fromi Output obsługują rozszerzanie tabulatorów.
Poniższy przykład tworzy skrypt migracji InitialCreate na bazie danych, która nie zawiera żadnych migracji, wykorzystując nazwę migracji.
Script-Migration 0 InitialCreate
Poniższy przykład tworzy skrypt dla wszystkich migracji po migracji InitialCreate przy użyciu identyfikatora migracji.
Script-Migration 20180904195021_InitialCreate
Update-Database
Aktualizuje bazę danych do ostatniej migracji lub do określonej migracji.
| Parameter | Description |
|---|---|
-Migration <String> |
Migracja docelowa. Migracje mogą być identyfikowane według nazwy lub identyfikatora. Liczba 0 jest specjalnym przypadkiem, co oznacza przed pierwszą migracją i powoduje przywrócenie wszystkich migracji. Jeśli migracja nie zostanie określona, polecenie zostanie domyślnie ustawione na ostatnią migrację. |
-Connection <String> |
Parametry połączenia do bazy danych. Domyślnie jest to wartość określona w AddDbContext lub OnConfiguring. |
Typowe parametry są wymienione powyżej.
Tip
Parametr Migration obsługuje rozszerzenie tabulacji.
Poniższy przykład cofa wszystkie migracje.
Update-Database 0
Poniższe przykłady aktualizują bazę danych do określonej migracji. Pierwszy używa nazwy migracji, a drugi używa identyfikatora migracji i określonego połączenia:
Update-Database InitialCreate
Update-Database 20180904195021_InitialCreate -Connection your_connection_string