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.
Począwszy od programu EF 9, możesz użyć zadania MSBuild, aby wygenerować skompilowany model i wstępnie skompilowane zapytania automatycznie, gdy projekt zostanie skompilowany lub opublikowany. Jest to przeznaczone głównie do współpracy z publikowaniem NativeAOT.
Ostrzeżenie
Obsługa nativeAOT i integracja z programem MSBuild są funkcjami eksperymentalnymi i nie są jeszcze odpowiednie do użytku produkcyjnego.
Instalowanie zadań
Aby rozpocząć, zainstaluj pakiet NuGet Microsoft.EntityFrameworkCore.Tasks. Na przykład:
dotnet add package Microsoft.EntityFrameworkCore.Tasks
Uwaga
Każdy projekt, który należy skompilować z wygenerowanymi plikami, powinien odwoływać się do pakietu NuGet, ale nie jest domyślnie przechodni.
Korzystanie z zadań
Jeśli projekt określi <PublishAot>true</PublishAot> to domyślnie zadanie MSBuild wygeneruje skompilowany model i wstępnie skompilowane zapytania podczas publikowania. W przeciwnym razie można ustawić następujące właściwości, aby kontrolować zachowanie generowania:
| Właściwość MSBuild | opis |
|---|---|
| EFOptimizeContext | Aby włączyć integrację programu MSBuild, ustaw na true.
Tylko EF Core 9–10; usunięto w EF Core 11. |
| EFScaffoldModelStage | Ustaw wartość publish, build lub none , aby wskazać, na którym etapie zostanie wygenerowany skompilowany model. Wartość domyślna to publish. |
| EFPrecompileQueriesStage | Ustaw wartość publish, build lub none , aby wskazać, na którym etapie zostaną wygenerowane wstępnie skompilowane zapytania. Wartość domyślna to publish. |
| DbContextName | Klasa pochodna DbContext do użycia. Tylko nazwa klasy lub w pełni kwalifikowana nazwa z przestrzeniami nazw. Jeśli ta opcja zostanie pominięta, program EF Core wykona generowanie dla wszystkich klas kontekstowych w projekcie. |
| EFTargetNamespace | Przestrzeń nazw do użycia dla wszystkich wygenerowanych klas. Jeśli ta opcja zostanie pominięta, program EF Core będzie używać polecenia $(RootNamespace). |
| EFOutputDir | Folder do umieszczania wygenerowanych plików przed skompilowanym projektem. Jeśli ta opcja zostanie pominięta, program EF Core będzie używać polecenia $(IntermediateOutputPath). |
| EfNullable | Określa, czy typy odwołań dopuszczane do wartości null będą używane w wygenerowanym kodzie. Jeśli ta opcja zostanie pominięta, program EF Core będzie używać polecenia $(Nullable). |
Uwaga
Począwszy od programu EF Core 11, EFOptimizeContext właściwość została usunięta. Właściwości EFScaffoldModelStage i EFPrecompileQueriesStage działają niezależnie i nie wymagają dodatkowej flagi włączania.
Ograniczenia
- W przypadku korzystania z integracji na etapie
publishnależy również ustawić identyfikator rid w projekcie startowym (np. <RuntimeIdentifier>win-x64</RuntimeIdentifier>) - Nie można określić innego projektu startowego podczas korzystania z tego podejścia, ponieważ wprowadza odwrotną zależność kompilacji. Oznacza to, że projekt kontekstu musi być samowystarczalny pod względem konfiguracji, więc jeśli aplikacja zwykle konfiguruje kontekst przy użyciu budowniczego hosta w innym projekcie, należy zaimplementować
IDesignTimeDbContextFactory w projekcie kontekstowym.TContext - Ponieważ projekt musi być kompilowany przed wygenerowaniem skompilowanego modelu, takie podejście nie obsługuje częściowych implementacji metod dostosowywania skompilowanego modelu.
- Obecnie zawsze wygeneruje to dodatkowy kod w skompilowanym modelu, który jest wymagany dla funkcji NativeAOT. Jeśli nie planujesz włączenia funkcji NativeAOT, wygeneruj skompilowany model przy użyciu narzędzi interfejsu wiersza polecenia.