Megosztás a következőn keresztül:


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.

További erőforrások