EF Core 工具參考(.NET CLI) - Microsoft Learn

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

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 更新工具 使用dotnettoolupdate--globaldotnet-ef將全域工具更新為最新的可用版本。

如果您已在專案中本機安裝工具,請使用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 -c 要使用的DbContext類別。

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

如果省略此選項,EFCore會尋找內容類別別。

如果有多個內容類別別,則需要此選項。

--project -p 目標專案之專案資料夾的相對路徑。

預設值為目前的資料夾。

--startup-project -s 啟動專案之專案資料夾的相對路徑。

預設值為目前的資料夾。

--framework 目標架構的目標FrameworkMoniker。

當專案檔指定多個目標架構時,請使用,而您想要選取其中一個架構。

--configuration 組建組態,例如:Debug或Release。

--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 -o 要放入檔案的目錄。

路徑相對於專案目錄。

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

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

上面列出常見的選項。

下列範例會使用預設設定,如果專案中只有一個DbContext,則適用: dotnetefdbcontextoptimize 下列範例會針對具有指定名稱的內容優化模型,並將它放在個別的資料夾和命名空間中: dotnetefdbcontextoptimize-oModels-nBlogModels-cBlogContext dotnetefdbcontextscaffold 為資料庫產生和實體類型的程式碼DbContext。

為了讓此命令產生實體類型,資料庫資料表必須有主鍵。

引數: 引數 描述 資料庫的連接字串。

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

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

選項: 選項 Short 描述 --data-annotations -d 使用屬性來設定模型,(盡可能)。

如果省略此選項,則只會使用FluentAPI。

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

--context-dir 要放入類別檔案的DbContext目錄。

路徑相對於專案目錄。

命名空間衍生自資料夾名稱。

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

注意:覆--namespace寫。

已在EFCore5.0中新增。

--force -f 覆寫現有檔案。

--output-dir -o 要放入實體類別檔案的目錄。

路徑相對於專案目錄。

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

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

已在EFCore5.0中新增。

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

若要指定多個架構,請針對每個架構重複一--schema次。

如果省略此選項,則會包含所有架構。

--table... -t 要為其產生實體類型的資料表。

若要指定多個資料表,請重複-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 -o 要寫入結果的檔案。

上面列出常見的選項。

dotnetefmigrationsadd 新增移轉。

引數: 引數 描述 移轉的名稱。

選項: 選項 Short 描述 --output-dir -o 用來輸出檔案的目錄。

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

預設為「移轉」。

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

預設為從輸出目錄產生。

已在EFCore5.0中新增。

上面列出常見的選項。

dotnetefmigrationsbundle 建立可執行檔以更新資料庫。

選項: 選項 Short 描述 --output -o 要建立的可執行檔路徑。

--force -f 覆寫現有檔案。

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

--target-runtime -r 要組合的目標執行時間。

上面列出常見的選項。

dotnetefmigrationslist 列出可用的移轉。

選項: 選項 描述 --connection 資料庫的連接字串。

預設為AddDbCoNtext或OnConfiguring中指定的。

已在EFCore5.0中新增。

--no-connect 請勿連線到資料庫。

已在EFCore5.0中新增。

上面列出常見的選項。

dotnetefmigrationsremove 移除上次移轉,復原針對最新移轉完成的程式碼變更。

選項: 選項 Short 描述 --force -f 還原最新的移轉,復原針對最新移轉完成的程式碼和資料庫變更。

如果連接到資料庫時發生錯誤,請繼續回復程式碼變更。

上面列出常見的選項。

dotnetefmigrationsscript 從移轉產生SQL腳本。

引數: 引數 描述 開始移轉。

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

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

預設為0。

結束移轉。

預設為上次移轉。

選項: 選項 Short 描述 --output -o 要寫入腳本的檔案。

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

--no-transactions 不要產生SQL交易語句。

已在EFCore5.0中新增。

上面列出常見的選項。

下列範例會建立InitialCreate移轉的腳本: dotnetefmigrationsscript0InitialCreate 下列範例會在InitialCreate移轉之後建立所有移轉的腳本。

dotnetefmigrationsscript20180904195021_InitialCreate 其他資源 移轉 反向工程 已編譯的模型 本文內容



請為這篇文章評分?