EF Core 工具參考(.NET CLI) - Microsoft Learn
文章推薦指數: 80 %
dotnet ef 可以安裝為全域或本機工具。
大部分開發人員偏好使用下列命令安裝 dotnet ef 為全域工具: .NET CLI 複製. dotnet tool install --global ...
跳到主要內容
已不再支援此瀏覽器。
請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。
下載MicrosoftEdge
InternetExplorer和MicrosoftEdge的詳細資訊
目錄
結束焦點模式
閱讀英文
儲存
目錄
閱讀英文
儲存
列印
Twitter
LinkedIn
Facebook
電子郵件
目錄
EntityFrameworkCore工具參考-.NETCoreCLI
發行項
09/28/2022
9位參與者
本文內容
命令列介面(CLI)ToolsforEntityFrameworkCore執行設計階段開發工作。
例如,他們會建立移轉、套用移轉,並根據現有的資料庫為模型產生程式碼。
這些命令是跨平臺dotnet命令的延伸模組,這是.NETCoreSDK的一部分。
這些工具可與.NETCore專案搭配使用。
使用VisualStudio時,請考慮使用套件管理員主控台工具,而不是CLI工具。
套件管理員主控台工具會自動:
使用套件管理員主控台中選取的目前專案,而不需要手動切換目錄。
開啟命令完成之後所產生的檔案。
提供命令、參數、專案名稱、內容類型和移轉名稱的索引標籤完成。
安裝工具
dotnetef可以安裝為全域或本機工具。
大部分開發人員偏好使用下列命令安裝dotnetef為全域工具:
dotnettoolinstall--globaldotnet-ef
若要使用它做為本機工具,請使用工具資訊清單檔還原宣告為工具相依性的專案相依性。
使用下列命令更新工具:
dotnettoolupdate--globaldotnet-ef
您必須先將套件新增Microsoft.EntityFrameworkCore.Design至特定專案,才能使用特定專案上的工具。
dotnetaddpackageMicrosoft.EntityFrameworkCore.Design
確認安裝
執行下列命令以確認EFCoreCLI工具是否已正確安裝:
dotnetef
命令的輸出會識別使用中的工具版本:
_/\__
---==/\\
______|.\|\
|__||__||)\\\
|_||_|\_/|//|\\
|___||_|/\\\/\\
EntityFrameworkCore.NETCommand-lineTools2.1.3-rtm-32065
如果您已在專案中本機安裝工具,請使用dotnettoolupdatedotnet-ef。
將附加--version
如需詳細資訊,請參閱dotnet工具檔的更新一節。
使用工具
使用工具之前,您可能需要建立啟動專案或設定環境。
目標專案和啟動專案
這些命令會參考專案和啟動專案。
專案也稱為目標專案,因為它是命令新增或移除檔案的位置。
根據預設,目前目錄中的專案是目標專案。
您可以使用選項,將不同的專案指定為目標專案--project。
啟動專案是工具建置和執行的專案。
這些工具必須在設計階段執行應用程式程式碼,才能取得專案的相關資訊,例如資料庫連接字串和模型的組態。
根據預設,目前目錄中的專案是啟動專案。
您可以使用選項,將不同的專案指定為啟始專案--startup-project。
啟始專案和目標專案通常是相同的專案。
其為個別專案的一般案例是:
EFCore內容和實體類別位於.NETCore類別庫中。
.NETCore主控台應用程式或Web應用程式會參考類別庫。
您也可以將移轉程式碼放在與EFCore內容不同的類別庫中。
其他目標架構
CLI工具會使用.NETCore專案和.NETFramework專案。
在.NETStandard類別庫中具有EFCore模型的應用程式可能沒有.NETCore或.NETFramework專案。
例如,這適用于Xamarin和通用Windows平臺應用程式。
在這種情況下,您可以建立.NETCore主控台應用程式專案,其唯一目的是做為工具的啟動專案。
專案可以是沒有實際程式碼的虛擬專案,只需要提供工具的目標。
為什麼需要虛擬專案?如先前所述,工具必須在設計階段執行應用程式程式碼。
若要這樣做,他們必須使用.NETCore執行時間。
當EFCore模型位於以.NETCore或.NETFramework為目標的專案時,EFCore工具會從專案借用執行時間。
如果EFCore模型位於.NETStandard類別庫,則無法這麼做。
.NETStandard不是實際的.NET實作;它是.NET實作必須支援的一組API規格。
因此,.NETStandard不足以讓EFCore工具執行應用程式程式碼。
您建立做為啟始專案的虛擬專案提供具象目標平臺,讓工具可以載入.NETStandard類別庫。
ASP.NETCore環境
若要指定ASP.NETCore專案的環境,請先設定ASPNETCORE_ENVIRONMENT環境變數,再執行命令。
從EFCore5.0開始,其他引數也可以傳入Program.CreateHostBuilder,讓您在命令列上指定環境:
dotnetefdatabaseupdate----environmentProduction
提示
權杖--會引導dotnetef將後面的所有專案視為引數,而不會嘗試將它們剖析為選項。
未使用dotnetef的任何額外引數會轉送到應用程式。
一般選項
選項
Short
描述
--json
顯示JSON輸出。
--context
只有類別名稱或具有命名空間的完整名稱。
如果省略此選項,EFCore會尋找內容類別別。
如果有多個內容類別別,則需要此選項。
--project
預設值為目前的資料夾。
--startup-project
預設值為目前的資料夾。
--framework
當專案檔指定多個目標架構時,請使用,而您想要選取其中一個架構。
--configuration
--runtime
如需執行階段識別項(RID)清單,請參閱RID目錄。
--no-build
請勿建置專案。
預期在組建為最新狀態時使用。
--help
-h
顯示說明資訊。
--verbose
-v
顯示詳細資訊輸出。
--no-color
不要將輸出著色。
--prefix-output
具有層級的前置詞輸出。
從EFCore5.0開始,任何其他引數會傳遞至應用程式。
dotnetefdatabasedrop
刪除資料庫。
選項:
選項
Short
描述
--force
-f
請勿確認。
--dry-run
顯示要卸載的資料庫,但不要卸載。
上述常見選項會列出。
dotnetefdatabaseupdate
更新資料庫到上次移轉或指定的移轉。
引數:
引數
描述
移轉可以依名稱或識別碼來識別。
數位0是一種特殊案例,表示在第一次移轉之前,並導致還原所有移轉。
如果未指定任何移轉,命令會預設為最後一次移轉。
選項:
選項
描述
--connection
預設為或OnConfiguring中指定的AddDbContext。
已在EFCore5.0中新增。
上面列出常見的選項。
下列範例會將資料庫更新為指定的移轉。
第一個會使用移轉名稱,而第二個則會使用移轉識別碼和指定的連線:
dotnetefdatabaseupdateInitialCreate
dotnetefdatabaseupdate20180904195021_InitialCreate--connectionyour_connection_string
dotnetefdbcontextinfo
取得型別DbContext的相關資訊。
上面列出常見的選項。
dotnetefdbcontextlist
列出可用的DbContext類型。
上面列出常見的選項。
dotnetefdbcontextoptimize
產生所使用的DbContext已編譯模型版本。
已在EFCore6中新增。
如需詳細資訊,請參閱已編譯的模型。
選項:
選項
Short
描述
--output-dir
路徑相對於專案目錄。
--namespace
預設為從根命名空間和輸出目錄加上CompiledModels產生。
上面列出常見的選項。
下列範例會使用預設設定,如果專案中只有一個DbContext,則適用:
dotnetefdbcontextoptimize
下列範例會針對具有指定名稱的內容優化模型,並將它放在個別的資料夾和命名空間中:
dotnetefdbcontextoptimize-oModels-nBlogModels-cBlogContext
dotnetefdbcontextscaffold
為資料庫產生和實體類型的程式碼DbContext。
為了讓此命令產生實體類型,資料庫資料表必須有主鍵。
引數:
引數
描述
對於ASP.NETCore2.x專案,此值可以是連接字串>的名稱=
要使用的提供者。
這通常是NuGet套件的名稱,例如:Microsoft.EntityFrameworkCore.SqlServer。
選項:
選項
Short
描述
--data-annotations
-d
使用屬性來設定模型,(盡可能)。
如果省略此選項,則只會使用FluentAPI。
--context
--context-dir
路徑相對於專案目錄。
命名空間衍生自資料夾名稱。
--context-namespace
注意:覆--namespace寫。
已在EFCore5.0中新增。
--force
-f
覆寫現有檔案。
--output-dir
路徑相對於專案目錄。
--namespace
預設為從根命名空間和輸出目錄產生。
已在EFCore5.0中新增。
--schema
若要指定多個架構,請針對每個架構重複一--schema次。
如果省略此選項,則會包含所有架構。
--table
若要指定多個資料表,請重複-t或--table針對每一個資料表。
如果省略此選項,則會包含所有資料表。
--use-database-names
使用資料表和資料行名稱,就像它們出現在資料庫中一樣。
如果省略此選項,資料庫名稱會變更為更符合C#名稱樣式慣例。
--no-onconfiguring
OnConfiguring隱藏在所產生DbContext類別中產生方法。
已在EFCore5.0中新增。
--no-pluralize
請勿使用複數化程式。
已在EFCore5.0中新增
上面列出常見的選項。
下列範例會建構所有架構和資料表,並將新檔案放在Models資料夾中。
dotnetefdbcontextscaffold"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;"Microsoft.EntityFrameworkCore.SqlServer-oModels
下列範例只會建立選取的資料表,並在具有指定名稱和命名空間的個別資料夾中建立內容:
dotnetefdbcontextscaffold"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;"Microsoft.EntityFrameworkCore.SqlServer-oModels-tBlog-tPost--context-dirContext-cBlogContext--context-namespaceNew.Namespace
下列範例會使用秘密管理員工具,從專案的組態集讀取連接字串。
dotnetuser-secretssetConnectionStrings:Blogging"DataSource=(localdb)\MSSQLLocalDB;InitialCatalog=Blogging"
dotnetefdbcontextscaffoldName=ConnectionStrings:BloggingMicrosoft.EntityFrameworkCore.SqlServer
下列範例會略過方法的ScaffoldingOnConfiguring。
當您想要在類別外部設定DbCoNtext時,這非常有用。
例如,ASP.NETCore應用程式通常會在Startup.ConfigureServices中設定。
已在EFCore5.0中新增。
dotnetefdbcontextscaffold"Server=(localdb)\mssqllocaldb;Database=Blogging;UserId=myUsername;Password=myPassword;"Microsoft.EntityFrameworkCore.SqlServer--no-onconfiguring
dotnetefdbcontextscript
從DbCoNtext產生SQL腳本。
略過任何移轉。
選項:
選項
Short
描述
--output
上面列出常見的選項。
dotnetefmigrationsadd
新增移轉。
引數:
引數
描述
選項:
選項
Short
描述
--output-dir
路徑相對於目標專案目錄。
預設為「移轉」。
--namespace
預設為從輸出目錄產生。
已在EFCore5.0中新增。
上面列出常見的選項。
dotnetefmigrationsbundle
建立可執行檔以更新資料庫。
選項:
選項
Short
描述
--output
--force
-f
覆寫現有檔案。
--self-contained
此外,將.NET執行時間組合在一起,因此不需要安裝在機器上。
--target-runtime
上面列出常見的選項。
dotnetefmigrationslist
列出可用的移轉。
選項:
選項
描述
--connection
預設為AddDbCoNtext或OnConfiguring中指定的。
已在EFCore5.0中新增。
--no-connect
請勿連線到資料庫。
已在EFCore5.0中新增。
上面列出常見的選項。
dotnetefmigrationsremove
移除上次移轉,復原針對最新移轉完成的程式碼變更。
選項:
選項
Short
描述
--force
-f
還原最新的移轉,復原針對最新移轉完成的程式碼和資料庫變更。
如果連接到資料庫時發生錯誤,請繼續回復程式碼變更。
上面列出常見的選項。
dotnetefmigrationsscript
從移轉產生SQL腳本。
引數:
引數
描述
移轉可以依名稱或識別碼來識別。
數位0是一種特殊案例,表示在第一次移轉之前。
預設為0。
預設為上次移轉。
選項:
選項
Short
描述
--output
--idempotent
-i
產生可在任何移轉時用於資料庫的腳本。
--no-transactions
不要產生SQL交易語句。
已在EFCore5.0中新增。
上面列出常見的選項。
下列範例會建立InitialCreate移轉的腳本:
dotnetefmigrationsscript0InitialCreate
下列範例會在InitialCreate移轉之後建立所有移轉的腳本。
dotnetefmigrationsscript20180904195021_InitialCreate
其他資源
移轉
反向工程
已編譯的模型
本文內容
延伸文章資訊
- 1Command Line Interface commands
Use "dotnet ef [command] --help" for more information about a command. Database. Usage: dotnet ef...
- 2EF Core 工具參考(.NET CLI) - Microsoft Learn
dotnet ef 可以安裝為全域或本機工具。 大部分開發人員偏好使用下列命令安裝 dotnet ef 為全域工具: .NET CLI 複製. dotnet tool install --glo...
- 3EF Core tools reference (.NET CLI) - Microsoft Learn
dotnet ef dbcontext scaffold. Generates code for a DbContext and entity types for a database. In ...
- 4[Day05] Entity Framework Core與DB First - iT 邦幫忙
NET Core專案底下開啟terminal 並執行以下指令用來安裝EF Core的nuget套件. dotnet add package Pomelo.EntityFrameworkCore....
- 5dotnet/efcore: EF Core is a modern object-database mapper ...
EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, u...