EF Core 工具參考(套件管理員主控台) - Microsoft Learn
文章推薦指數: 80 %
... 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
只有類別名稱或具有命名空間的完整名稱。
如果省略此參數,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
路徑相對於專案目錄。
-Namespace
預設為從根命名空間和輸出目錄產生。
已在EFCore5.0中新增。
-ContextNamespace
注意:覆-Namespace寫。
已在EFCore5.0中新增。
-Context
-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
其他資源
移轉
反向工程
已編譯的模型
本文內容
延伸文章資訊
- 1Scaffolding in Razor Pages
- 2還原工程- EF Core | Microsoft Learn
NET 命令列介面(CLI) 工具的 dotnet ef dbcontext scaffold 命令來執行還原工程。 必要條件. 在進行還原工程之前,您必須先安裝PMC 工具 (僅限Visual...
- 3Scaffold-DbContext ignores table after updating to EF Core ...
Tools) 6.0.5 I noticed that when running Scaffold-DbContext , a table in the database is complete...
- 4EF Core 工具參考(套件管理員主控台) - Microsoft Learn
... Scaffold-DbContext; Script-DbContext; Script-Migration; Update-Database; 其他資源. 適用于Entity Fram...
- 5Generating a model from an existing database
You use the DbContext Scaffold command to generate the model. The command has two required argume...