代码之家  ›  专栏  ›  技术社区  ›  Aldemar Cuartas Carvajal

脚手架DbContext到不同的输出文件夹

  •  16
  • Aldemar Cuartas Carvajal  · 技术社区  · 8 年前

    我正在为之工作的公司解决方案中实现存储库模式,将后端项目中的模型类与数据库上下文分离,并在DbContexts项目中迁移。

    我使用scaffoldbcontext将我的后端项目设置为模型类目标的默认项目,但DbContext类总是在与模型类相同的文件夹中创建的。是否可以将DbContext类的创建重定向到不同的输出文件夹(在我的例子中是DbContexts项目)?

    6 回复  |  直到 8 年前
        1
  •  22
  •   LucaSC    8 年前

    现在可以使用-ContextDir选项重定向生成的上下文:

    -上下文目录 要放置DbContext文件的目录。路径相对于项目目录。

    所以在你的情况下是这样的:

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

    资料来源: https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell

        2
  •  10
  •   ErikEJ    8 年前

    是的,您可以使用我的“EF Core Power Tools”免费Visual Studio扩展来实现这一点:

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

        3
  •  7
  •   EJoshuaS - Stand with Ukraine    6 年前

    我也遇到了类似的问题。我在一个单独的项目中有我的EF模型。为了在那里编写模型,我只使用了以下命令:

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

    对我来说,关键是 -Project "[Project Name]" -Force 选项

    正如上面的答案所示,如果您想在该项目中使用不同的文件夹,只需使用 -OutputDir 选项

        4
  •  1
  •   Vinod Kumar Gupta    7 年前

    您需要更改 默认项目 对于要在其中生成实体的项目,还要指定要在其中生成模型定义的文件夹(使用OutputDir开关)。示例如下

    Scaffold DbContext“数据源=。\SQLEXPRESS;初始目录=DbName;集成安全=SSPI;”微软EntityFrameworkCore。SqlServer- 输出目录 模型 -f-d

        5
  •  1
  •   ihebiheb    5 年前

    您可以在不同的项目中生成模型和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是可选的,但我使用来保持名称空间与类位置同步。
        6
  •  -2
  •   cigien Jorge Eldis    4 年前

    如ihebiheb所示 下面是一个例子

    上下文命名空间,类的命名空间 context dir,您将在其中保留类的上下文的文件夹 命名空间,数据库中每个类的空间名称 output dir,数据库中每个类的输出文件夹 f、 覆盖数据库中每个类的输出文件夹中存在的数据

    dotnet ef dbcontext脚手架“connectionstring”Microsoft。EntityFrameworkCore。SqlServer--上下文命名空间“apitienda.dal.context”--上下文目录“context”--命名空间“apitienda.dto.Entities”--输出目录“../apitienda.dto/Entities”-f

    蒂恩达 --阿皮蒂安达。应用程序编程接口 --阿皮蒂安达。dto公司 --实体 --阿皮蒂安达。dal公司 --上下文

    推荐文章