我可以从 edmx 模型更新数据库表吗?

Posted

技术标签:

【中文标题】我可以从 edmx 模型更新数据库表吗?【英文标题】:I can update database table from edmx model? 【发布时间】:2021-04-08 07:56:00 【问题描述】:

是否可以从 edmx 模型更新数据库表,例如,如果我在 edmx 图表中创建一个新字段到一个表,我想在数据库中更新相应的映射表添加这个新字段......在 Visual Studio 菜单中我找到了声音“从数据库更新模型”和“从模型创建数据库”,但我没有找到“从模型更新数据库”...

【问题讨论】:

为什么不将字段添加到数据库表中,然后更新 EDMX,这是预期的工作流程? 【参考方案1】:

在 EF EDMX“模型优先”工作流程中,您始终会生成完整的数据库 DDL 脚本,对于增量更改,请使用 SSDT 等架构比较工具来创建更改脚本。

参见例如https://docs.microsoft.com/en-us/ef/ef6/modeling/designer/workflows/model-first#5-dealing-with-model-changes

这不是一个非常流行或有用的工作流程,而且从未构建过用于增量更新的工具。 广大大多数 EDMX 用户在没有自定义 EDMX 的情况下执行数据库优先的工作流程。

但是您真的应该停止使用 EDMX。图形设计器似乎开始更简单,但从长远来看,使用基于代码的映射更简单。

【讨论】:

【参考方案2】:

我不相信 Edmx(数据库拳头)以这种方式工作,至少,开箱即用。您需要先使用代码,然后启用迁移。 Edmx 只不过是映射到您的数据,与迁移无关。 我相信有一种方法可以首先使用 Visual Studio 自动生成代码……就像 Edmx 一样。

【讨论】:

以上是关于我可以从 edmx 模型更新数据库表吗?的主要内容,如果未能解决你的问题,请参考以下文章

更新EDMX文件时出错

更新您的 edmx 以反映您的数据库中所做的更改(.net linq-to-entities)

为啥当删除和重新添加表到 .EDMX 时,一些表以不同的名称出现?

是否可以在 EDMX 文件 C# DB 优先方法中更新多个过程和函数定义

如何防止在 EDMX 更新后删除字段

使用数据库中的更新模型添加只读视图