EF Core 工具參考(套件管理員主控台) - Microsoft Learn

文章推薦指數: 80 %
投票人數:10人

... Scaffold-DbContext; Script-DbContext; Script-Migration; Update-Database; 其他資源. 適用于Entity Framework Core 的套件管理員主控台(PMC) ... 跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge InternetExplorer和MicrosoftEdge的詳細資訊 目錄 結束焦點模式 閱讀英文 儲存 目錄 閱讀英文 儲存 列印 Twitter LinkedIn Facebook 電子郵件 目錄 EntityFrameworkCore工具參考-VisualStudio中的套件管理員主控台 發行項 09/28/2022 4位參與者 本文內容 適用于EntityFrameworkCore的套件管理員主控台(PMC)工具會執行設計階段開發工作。

例如,他們會建立移轉、套用移轉,並根據現有的資料庫為模型產生程式碼。

命令會使用套件管理員主控台在VisualStudio內執行。

這些工具會使用.NETFramework和.NETCore專案。

如果您未使用VisualStudio,建議您改用EFCore命令列工具。

.NETCoreCLI工具是跨平臺,並在命令提示字元內執行。

安裝工具 在PackageManager主控台中執行下列命令,以安裝套件管理員主控台工具: Install-PackageMicrosoft.EntityFrameworkCore.Tools 在套件管理員主控台中執行下列命令來更新工具。

Update-PackageMicrosoft.EntityFrameworkCore.Tools 驗證安裝 執行此命令來確認已安裝工具: Get-Helpabout_EntityFrameworkCore 輸出看起來像這樣(它不會告訴您正在使用哪些版本的工具): _/\__ ---==/\\ ______|.\|\ |__||__||)\\\ |_||_|\_/|//|\\ |___||_|/\\\/\\ TOPIC about_EntityFrameworkCore SHORTDESCRIPTION ProvidesinformationabouttheEntityFrameworkCorePackageManagerConsoleTools. 使用工具 使用工具之前: 瞭解目標與啟動專案之間的差異。

瞭解如何搭配.NETStandard類別庫使用工具。

針對ASP.NETCore專案,請設定環境。

目標和啟動專案 這些命令會參考專案和啟動專案。

專案也稱為目標專案,因為它是命令新增或移除檔案的位置。

根據預設,在套件管理員主控台中選取的預設專案是目標專案。

您可以使用參數,將不同的專案指定為目標專案-Project。

啟動專案是工具建置和執行的專案。

這些工具必須在設計階段執行應用程式程式碼,才能取得專案的相關資訊,例如資料庫連接字串和模型的組態。

根據預設,方案總管中的啟動專案是啟始專案。

您可以使用參數,將不同的專案指定為啟動專案-StartupProject。

啟始專案和目標專案通常是相同的專案。

其為個別專案的一般案例是: EFCore內容和實體類別位於.NETCore類別庫中。

.NETCore主控台應用程式或Web應用程式會參考類別庫。

您也可以將移轉程式碼放在與EFCore內容不同的類別庫中。

其他目標架構 套件管理員主控台工具可搭配.NETCore或.NETFramework專案使用。

在.NETStandard類別庫中具有EFCore模型的應用程式可能沒有.NETCore或.NETFramework專案。

例如,這適用于Xamarin和通用Windows平臺應用程式。

在這種情況下,您可以建立.NETCore或.NETFramework主控台應用程式專案,其唯一目的是做為工具的啟動專案。

專案可以是沒有實際程式碼的虛擬專案,只需要提供工具的目標。

為什麼需要虛擬專案?如先前所述,工具必須在設計階段執行應用程式程式碼。

若要這樣做,他們必須使用.NETCore或.NETFramework執行時間。

當EFCore模型位於以.NETCore或.NETFramework為目標的專案時,EFCore工具會從專案借用執行時間。

如果EFCore模型位於.NETStandard類別庫,則無法這麼做。

.NETStandard不是實際的.NET實作;它是.NET實作必須支援的一組API規格。

因此,.NETStandard不足以讓EFCore工具執行應用程式程式碼。

您建立做為啟始專案的虛擬專案提供具象目標平臺,讓工具可以載入.NETStandard類別庫。

ASP.NETCore環境 若要指定ASP.NETCore專案的環境,請在執行命令之前設定env:ASPNETCORE_ENVIRONMENT。

從EFCore5.0開始,其他引數也可以傳入Program.CreateHostBuilder,讓您在命令列上指定環境: Update-Database-Args'--environmentProduction' 一般參數 下表顯示所有EFCore命令通用的參數: 參數 描述 -Context 要使用的DbContext類別。

只有類別名稱或具有命名空間的完整名稱。

如果省略此參數,EFCore會尋找內容類別別。

如果有多個內容類別別,則需要此參數。

-Project 目標專案。

如果省略此參數,則會使用套件管理員主控台的預設專案作為目標專案。

-StartupProject 啟動專案。

如果省略此參數,[方案]屬性中的啟動專案會當做目標專案使用。

-Args 傳遞至應用程式的引數。

已在EFCore5.0中新增。

-Verbose 顯示詳細資訊輸出。

若要顯示命令的說明資訊,請使用PowerShell的Get-Help命令。

提示 Context、Project和StartupProject參數支援索引標籤展開。

Add-Migration 新增移轉。

參數: 參數 描述 -Name 移轉的名稱。

這是位置參數,而且是必要的。

-OutputDir 目錄會用來輸出檔案。

路徑相對於目標專案目錄。

預設為「移轉」。

-Namespace 要用於所產生類別的命名空間。

預設為從輸出目錄產生。

已在EFCore5.0中新增。

上述一般參數會列出。

Bundle-Migration 建立可執行檔以更新資料庫。

參數: 參數 描述 -Output 要建立的可執行檔路徑。

-Force 覆寫現有檔案。

-SelfContained 同時將.NET執行時間組合在一起,因此不需要安裝在機器上。

-TargetRuntime 要組合的目標執行時間。

-Framework 目標架構。

預設為專案中的第一個。

上述一般參數會列出。

Drop-Database 卸除資料庫。

參數: 參數 描述 -WhatIf 顯示要卸載的資料庫,但不要卸載。

上述一般參數會列出。

Get-DbContext 列出並取得可用DbContext類型的相關資訊。

上述一般參數會列出。

Get-Migration 列出可用的移轉。

已在EFCore5.0中新增。

參數: 參數 描述 -Connection 資料庫的連接字串。

預設為AddDbCoNtext或OnConfiguring中指定的。

-NoConnect 請勿連線到資料庫。

上述一般參數會列出。

Optimize-DbContext 產生所使用的DbContext模型編譯版本。

已在EFCore6中新增。

如需詳細資訊,請參閱編譯的模型。

參數: 參數 描述 -OutputDir 要放入檔案的目錄。

路徑相對於專案目錄。

-Namespace 要用於所有產生的類別的命名空間。

預設為從根命名空間和輸出目錄加上CompiledModels產生的。

上述一般參數會列出。

下列範例會使用預設值,如果專案中只有一個DbContext,則適用: Optimize-DbContext 下列範例會針對具有指定名稱的內容優化模型,並將它放在不同的資料夾和命名空間中: Optimize-DbContext-OutputDirModels-NamespaceBlogModels-ContextBlogContext 移除移轉 移除上次移轉(復原移轉)完成的程式碼變更。

參數: 參數 描述 -Force 還原移轉(回復套用至資料庫)的變更。

上述一般參數會列出。

Scaffold-DbContext 為資料庫產生和實體類型的程式碼DbContext。

若要Scaffold-DbContext產生實體類型,資料庫資料表必須具有主鍵。

參數: 參數 描述 -Connection 資料庫的連接字串。

對於ASP.NETCore2.x專案,此值可以是連接字串>的名稱= 要使用的提供者。

通常這是NuGet套件的名稱,例如:Microsoft.EntityFrameworkCore.SqlServer。

這是位置參數,而且是必要的。

-OutputDir 要放入實體類別檔案的目錄。

路徑相對於專案目錄。

-ContextDir 要放入檔案的DbContext目錄。

路徑相對於專案目錄。

-Namespace 要用於所有產生的類別的命名空間。

預設為從根命名空間和輸出目錄產生。

已在EFCore5.0中新增。

-ContextNamespace 要用於所DbContext產生類別的命名空間。

注意:覆-Namespace寫。

已在EFCore5.0中新增。

-Context 要產生之DbContext類別的名稱。

-Schemas 要為其產生實體類型的資料表架構。

如果省略此參數,則會包含所有架構。

-Tables 要為其產生實體類型的資料表。

如果省略此參數,則會包含所有資料表。

-DataAnnotations 使用屬性在)可能的情況下設定模型(。

如果省略此參數,則只會使用FluentAPI。

-UseDatabaseNames 使用資料表和資料行名稱,與資料庫中顯示的名稱完全相同。

如果省略此參數,資料庫名稱會變更為更符合C#名稱樣式慣例。

-Force 覆寫現有檔案。

-NoOnConfiguring 不要產生DbContext.OnConfiguring。

已在EFCore5.0中新增。

-NoPluralize 請勿使用複數化程式。

已在EFCore5.0中新增。

上述一般參數會列出。

範例: Scaffold-DbContext"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;"Microsoft.EntityFrameworkCore.SqlServer-OutputDirModels 範例:只建構選取的資料表,並在具有指定名稱和命名空間的個別資料夾中建立內容: Scaffold-DbContext"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;"Microsoft.EntityFrameworkCore.SqlServer-OutputDirModels-Tables"Blog","Post"-ContextDirContext-ContextBlogContext-ContextNamespaceNew.Namespace 下列範例會從可能使用秘密管理員工具設定的專案組態讀取連接字串。

Scaffold-DbContext"Name=ConnectionStrings:Blogging"Microsoft.EntityFrameworkCore.SqlServer Script-DbContext 從DbCoNtext產生SQL腳本。

略過任何移轉。

參數: 參數 描述 -Output 要寫入結果的檔案。

上述一般參數會列出。

Script-Migration 產生SQL腳本,此腳本會將所有變更從一個選取的移轉套用至另一個選取的移轉。

參數: 參數 描述 -From 開始移轉。

移轉可以依名稱或識別碼來識別。

數位0是一種特殊案例,表示第一次移轉之前。

預設為0。

-To 結束移轉。

預設為上次移轉。

-Idempotent 產生可在任何移轉時用於資料庫的腳本。

-NoTransactions 請勿產生SQL交易語句。

已在EFCore5.0中新增。

-Output 要寫入結果的檔案。

如果省略此參數,則會使用與應用程式執行時間檔案相同的資料夾中產生的名稱來建立檔案,例如:/obj/Debug/netcoreapp2.1/ghbkztfz.sql/。

上述一般參數會列出。

提示 To、From和Output參數支援索引標籤展開。

下列範例會使用移轉名稱,從資料庫建立InitialCreate移轉(的腳本,而不需要任何移轉)。

Script-Migration0InitialCreate 下列範例會使用移轉識別碼,在InitialCreate移轉之後建立所有移轉的腳本。

Script-Migration20180904195021_InitialCreate Update-Database 更新資料庫到上次移轉或指定的移轉。

參數 描述 -Migration 目標移轉。

移轉可以依名稱或識別碼來識別。

數位0是特殊案例,表示在第一次移轉之前,並會導致還原所有移轉。

如果未指定移轉,命令會預設為上次移轉。

-Connection 資料庫的連接字串。

預設為或OnConfiguring中指定的AddDbContext。

已在EFCore5.0中新增。

上述一般參數會列出。

提示 參數Migration支援索引標籤展開。

下列範例會還原所有移轉。

Update-Database0 下列範例會將資料庫更新為指定的移轉。

第一個使用移轉名稱,第二個使用移轉識別碼和指定的連線: Update-DatabaseInitialCreate Update-Database20180904195021_InitialCreate-Connectionyour_connection_string 其他資源 移轉 反向工程 已編譯的模型 本文內容



請為這篇文章評分?