Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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-csomag. 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.
CSAK az EF Core 9-10-ben elérhető; eltávolítva az EF Core 11-ből. |
| 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. |
Jegyzet
Az EF Core 11-től kezdve a EFOptimizeContext tulajdonság el lett távolítva. A EFScaffoldModelStage és a EFPrecompileQueriesStage tulajdonságok most már egymástól függetlenül működnek, és egyikük sem igényel további engedélyezési jelzőt.
Korlátozások
- Ha az integrációt a
publishfá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.