我在我工作的公司解决方案中实现存储库模式,在后端项目和数据库上下文中分离模型类以及在DbContexts项目中迁移。
我使用Scaffold-DbContext将我的Backend Project设置为模型类目标的默认项目,但DbContext Class始终与模型类在同一文件夹中创建。是否可以将DbContext类的创建重定向到另一个输出文件夹,在我的情况下是DbContexts项目?
答案 0 :(得分:3)
是的,您可以使用我的“EF Core Power Tools”免费的Visual Studio扩展程序:
https://github.com/ErikEJ/SqlCeToolbox/wiki/EF-Core-Power-Tools
答案 1 :(得分:3)
现在可以使用-ContextDir选项重定向生成的上下文:
-ContextDir 放置DbContext文件的目录。路径是相对于项目目录的。
因此,在您的情况下,将是这样的:
Scaffold-DbContext "*connection*" "*provider*" -OutputDir "BackendProject" -ContextDir "DbContexts"
来源:https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell
答案 2 :(得分:3)
我遇到了类似的问题。我将EF模型放在一个单独的项目中。为了在那里写模型,我只使用了以下命令:
Scaffold-DbContext "Server=[Server];Database=[Database Name];Trsted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -Project "[Project Name]" -Force
对我来说,关键是-Project "[Project Name]" -Force
选项。
如最佳答案所示,如果您要在该项目中使用其他文件夹,则只需使用-OutputDir
选项。
答案 3 :(得分:0)
答案 4 :(得分:0)
您需要将默认项目更改为要在其中生成实体的项目,还要指定要在其中生成模型定义的文件夹(使用OutputDir开关)。示例如下
Scaffold-DbContext“数据源=。\ SQLEXPRESS;初始目录= DbName;集成安全性= SSPI;” Microsoft.EntityFrameworkCore.SqlServer- OutputDir 模型 -f -d
答案 5 :(得分:0)
您可以像这样在不同的项目(不仅是同一项目的不同文件夹)中生成模型和 DBContext :
Scaffold-DbContext "connectionString" Microsoft.EntityFrameworkCore.SqlServer -ContextDir "C:\MySolution\DataAccessLayer\Context" -OutputDir "C:\MySolution\DomainLayer\Models" -Namespace "DomainLayer.Models" -ContextNamespace "DataAccessLayer.Context"