Udostępnij za pośrednictwem


Integracja programu Entity Framework Core MSBuild

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 użycia 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 Ustaw wartość na , aby true włączyć integrację programu MSBuild.
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 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).

Ograniczenia

  • W przypadku korzystania z integracji na etapie publish należ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ć autosuficientny pod względem konfiguracji, więc jeśli aplikacja zwykle konfiguruje kontekst przy użyciu konstruktora hostów w innym projekcie, należy zaimplementować <> w projekcie kontekstowym.
  • 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.

Dodatkowe zasoby