Entity Framework Core MSBuild integráció
Az EF 9-től kezdve az MSBuild-feladatokkal automatikusan létrehozhatja a lefordított modellt és az előre összeállított lekérdezéseket a projekt létrehozásakor vagy közzétételekor. Ez elsősorban a NativeAOT közzétételhez használható.
Figyelmeztetés
A NativeAOT-támogatás és az MSBuild integráció kísérleti funkciók, és még nem alkalmasak éles használatra.
A feladatok telepítése
Első lépésként telepítse a Microsoft.EntityFrameworkCore.Tasks NuGet-csomagot. Például:
dotnet add package Microsoft.EntityFrameworkCore.Tasks
Jegyzet
Minden létrehozott fájlokkal lefordítandó projektnek hivatkoznia kell a NuGet-csomagra, alapértelmezés szerint nem tranzitív.
A feladatok használata
Ha a projekt <PublishAot>true</PublishAot>
ad meg, akkor alapértelmezés szerint az MSBuild tevékenység lefordított modellt és előre összeállított lekérdezéseket hoz létre a közzététel során. Ellenkező esetben a következő tulajdonságokat állíthatja be a létrehozási viselkedés szabályozásához:
MSBuild tulajdonság | Leírás |
---|---|
EFOptimizeContext | Állítsa be true az MSBuild-integráció engedélyezéséhez. |
EFScaffoldModelStage | Állítsa publish , build vagy none értékre, hogy jelezze, hogy a lefordított modell melyik szakaszában lesz létrehozva. Alapértelmezés szerint publish . |
EFPrecompileQueriesStage | Állítsa be az értéket publish , build vagy none -ra, hogy jelezze, melyik szakaszban hozhatók létre az előre összeállított lekérdezések. Alapértelmezés szerint publish . |
DbContextName | A használni kívánt származtatott DbContext osztály. Csak osztálynév vagy teljes névtérrel rendelkező osztálynév. Ha ez a beállítás nincs megadva, az EF Core a projekt összes környezeti osztályához elvégzi a létrehozást. |
EFTargetNamespace | Az összes létrehozott osztályhoz használandó névtér. Ha ez a beállítás nincs megadva, az EF Core $(RootNamespace) fog használni. |
EFOutputDir | Az a mappa, amely a létrehozott fájlokat a projekt fordítása előtt helyezi el. Ha ez a beállítás nincs megadva, az EF Core $(IntermediateOutputPath) fog használni. |
EFNullable | Azt határozza meg, hogy a létrehozott kódban használ-e null értékű hivatkozástípusokat. Ha ez a beállítás nincs megadva, az EF Core $(Nullable) fog használni. |
Korlátozások
- Ha az integrációt a
publish
fázisban használja, állítsa be a rid értékét az indító projektben (például <RuntimeIdentifier>win-x64</RuntimeIdentifier>) - Nem adható meg másik indítási projekt a megközelítés használatakor, mivel inverz buildfüggőséget vezetne be. Ez azt jelenti, hogy a környezeti projektnek konfiguráció szempontjából automatikusan kell lennie, ezért ha az alkalmazás általában egy másik projekt gazdagépszerkesztővel konfigurálja a környezetet, akkor kell implementálnia IDesignTimeDbContextFactory<TContext> a környezeti projektben.
- Mivel a projektnek összeállíthatónak kell lennie a lefordított modell létrehozása előtt, ez a megközelítés nem támogatja a lefordított modell testreszabásához szükséges részleges metódus-implementációkat.
- Ez jelenleg mindig létrehoz további kódot a lefordított modellben, amely a NativeAOT-hoz szükséges. Ha nem tervezi engedélyezni a NativeAOT-t, akkor hozza létre a lefordított modellt a CLI-eszközökkel.