【问题标题】:Entity Framework Core scaffold additional tables not contextEntity Framework Core 脚手架附加表而不是上下文
【发布时间】:2019-01-07 16:34:51
【问题描述】:

来自微软文档:

https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db

当尝试从现有数据库对模型和 dbcontext 进行逆向工程时,您可以运行如下命令:

Scaffold-DbContext "Server=myserver; Database=mydatabase; Integrated Security=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Entities -Tables FirstTable, SecondTable 

这将根据我的连接详细信息为我创建两个模型和一个 dbcontext。

如果我想稍后回来并添加另外几个表,是否可以运行相同的命令,或者使用不同参数的类似命令,不会再次创建 dbcontext,因为我已经有这是我最初的脚手架。

目前,我们一遍又一遍地运行该命令,每次都删除上下文,或者根据数据库表手动构建任何新模型。这似乎适得其反。

在 Entity Framework 6 及以下版本中,我们将只维护 edmx 图,但显然这不包含在 EfCore 中。

【问题讨论】:

    标签: c# entity-framework-core


    【解决方案1】:

    它被记录为 EF Core 团队的请求,但现在已经等待了很长时间。

    Github link

    【讨论】:

      【解决方案2】:

      在 EFCore 中,确实不支持数据库优先设计。脚手架功能仅用于构建代码优先模型/上下文的一次性操作,因此您无需手动编写代码即可开始使用 EF。第一次运行后,您应该转移到 EF 迁移而不是脚手架来处理架构的添加/更新/删除。

      这是用于迁移的 MS 文档:https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/

      【讨论】:

      • “EF Core 中的迁移功能提供了一种增量更新数据库架构以使其与应用程序的数据模型保持同步的方法”我的应用程序没有指定数据库的架构,这不是一个代码优先的项目,反过来呢?
      • 猜这就是我的意思....EF Core 的设计初衷并不是首先支持数据库,这听起来像是您所追求的。脚手架实用程序旨在获取现有数据库并为您创建所有必要的代码优先模型/上下文作为起点。这并不是要为 EF Core 提供数据库优先支持……至少这是我的理解。至于您的“应用程序不指定架构”评论,我不完全确定您的意思。您的模型/上下文定义应提取到他们自己的项目集中,以便您可以单独维护它们。
      • 我连接前端的数据库是10年前存在的,我不能更改它,有数百个表。因为我不想在项目开始时引入 200 个实体,但后来我得到了需要添加额外表的新要求 - 这让我陷入了最初描述的困境。
      【解决方案3】:

      您可以再次重新生成文件,所有生成的类都是部分的,您可以在并行部分类中实现任何自定义。

      EF Core Power Tools 允许您只生成 POCO 类或只生成 DbContext。

      【讨论】:

        猜你喜欢
        • 2021-05-10
        • 1970-01-01
        • 2016-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多