簡體   English   中英

腳手架-DbContext 到不同的輸出文件夾

[英]Scaffold-DbContext to different output folder

我在我工作的公司解決方案中實現存儲庫模式,將后端項目中的模型類和 DbContexts 項目中的數據庫上下文和遷移分開。

我正在使用 Scaffold-DbContext 將我的后端項目設置為模型類目標的默認項目,但是 DbContext 類始終在與模型類相同的文件夾中創建。 是否可以將 DbContext 類的創建重定向到不同的輸出文件夾,在我的例子中是 DbContexts 項目?

現在可以使用 -ContextDir 選項重定向生成的上下文:

-ContextDir放置 DbContext 文件的目錄。路徑是相對於項目目錄的。

所以在你的情況下它會是這樣的:

Scaffold-DbContext "*connection*" "*provider*" -OutputDir "BackendProject" -ContextDir "DbContexts"

來源: https ://learn.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell

是的,您可以使用我的“EF Core Power Tools”免費 Visual Studio 擴展來做到這一點:

https://github.com/ErikEJ/SqlCeToolbox/wiki/EF-Core-Power-Tools

我遇到了類似的問題。 我的 EF 模型在一個單獨的項目中。 為了在那里編寫模型,我只使用了以下命令:

Scaffold-DbContext "Server=[Server];Database=[Database Name];Trsted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -Project "[Project Name]" -Force 

對我來說關鍵是-Project "[Project Name]" -Force選項。

如最佳答案所示,如果您想要在該項目中使用不同的文件夾,則只需使用-OutputDir選項即可。

您可以像這樣在不同的項目(不僅是同一項目中的不同文件夾)中生成模型和 DBContext:

Scaffold-DbContext "connectionString" Microsoft.EntityFrameworkCore.SqlServer -ContextDir "C:\MySolution\DataAccessLayer\Context" -OutputDir "C:\MySolution\DomainLayer\Models" -Namespace "DomainLayer.Models" -ContextNamespace "DataAccessLayer.Context"
  1. 請注意,指定的路徑是絕對的。
  2. 我知道文檔說路徑是相對於項目的。 但它並不禁止放置絕對路徑。
  3. -Namespace 和 -ContextNamespace 是可選的,但我使用它來使我的名稱空間與類位置保持同步。

腳手架-DbContext 到不同的輸出文件夾:


  • 包管理器控制台的幫助下
  • Scaffold-DbContext 'ConnectionString' Microsoft.EntityFrameworkCore.SqlServer -ContextDir MyDbContextFolder -OutputDir EntitiesFolder

  • .Net CLI的幫助下
  • dotnet ef dbcontext scaffold 'ConnectionString' Microsoft.EntityFrameworkCore.SqlServer --context-dir MyDbContextFolder --output-dir EntitiesFolder

您需要將默認項目更改為要在其中生成實體的項目,還需要指定要在其中生成模型定義的文件夾(使用 OutputDir 開關)。 示例如下

Scaffold-DbContext "Data Source=.\SQLEXPRESS;Initial Catalog=DbName;Integrated Security=SSPI;" Microsoft.EntityFrameworkCore.SqlServer - OutputDir模型-f -d

我正在我工作的公司解決方案中實現存儲庫模式,將后端項目中的模型類與 DbContexts 項目中的數據庫上下文和遷移分開。

我正在使用 Scaffold-DbContext 將我的后端項目設置為模型類目標的默認項目,但是 DbContext 類始終與模型類在同一文件夾中創建。 是否可以將 DbContext 類的創建重定向到不同的輸出文件夾,在我的情況下重定向到 DbContexts 項目?

正如 ihebiheb 所指出的這是一個例子

context-namespace,你的類的命名空間 context-dir,你將在其中保留你的類命名空間的上下文的文件夾,數據庫中每個類的空間名稱 output-dir,數據庫中每個類的輸出文件夾 f,覆蓋數據庫中每個類的輸出文件夾中存在的數據

dotnet ef dbcontext scaffold "connectionstring" Microsoft.EntityFrameworkCore.SqlServer --context-namespace "apitienda.dal.Context" --context-dir "Context" --namespace "apitienda.dto.Entities" --output-dir ".. /apitienda.dto/實體"-f

tienda --apitienda.api --apitienda.dto --Entities --apitienda.dal --Context

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM