【问题标题】:update model after scaffolding existing database EF core 2.X脚手架现有数据库 EF core 2.X 后更新模型
【发布时间】:2019-06-12 06:31:39
【问题描述】:

我正在使用 EF core 2.X 搭建现有数据库。我使用“dotnet ef dbcontext scaffold”命令生成了模型类,它生成了模型类。

数据库团队更改了一些表,我必须再次运行“dotnet ef dbcontext scaffold”命令来生成模型类以仅选择更改。

例如让我们说 我有一张名为“employee”的表,其中包含列 ID、名称。

我运行“dotnet ef dbcontext scaffold”来生成模型

之后我更改了员工表并在数据库中添加了一个名为“地址”的列。我怎样才能脚手架命令只选择更改。

注意:我知道在生成模型后我应该使用迁移来更改数据库,但是我们的数据库团队已经更改了数据库,不幸的是,我必须这样做。和建议

【问题讨论】:

    标签: entity-framework-core


    【解决方案1】:

    您可以为脚手架命令提供一个可选参数,以仅更新您的目标表。

    Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=DatabaseName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir DirectoryNameOfYourModels -Tables employee -f
    

    如果您使用的是 .net core cli,请使用。

    dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=DatabaseName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o DirectoryNameOfYourModels -t employee -f
    

    【讨论】:

    • 您好,感谢您的回复。当我使用 -t 运行命令时。它删除了所有现有的模型类,并只用一张表生成新的 DBcontext 类。简而言之。我想包括更改并保持原样。如何使用 Scaffold-DbContext 命令来做到这一点
    • 嗨@itmannz 提供 -t 参数是您要更新的表名应该只更新该实体。它应该像你说的那样保持一切。那样对我有用。您正在使用 .net cli 吗?我以为你在使用包管理器控制台。
    • @Amir:它会创建一个新的上下文文件,其中仅包含您命令中选择的表。如果您使用 cli oder 包管理器控制台,它没有任何区别。
    猜你喜欢
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    相关资源
    最近更新 更多