【发布时间】:2020-04-15 21:35:41
【问题描述】:
到 VS 2019,我创建了一个 API 项目(首先是数据库),一切都运行良好,现在我在数据库中进行了一些更改,例如添加新表和一些属性以及修改其他人的数据类型等等..,问题是如何更新模型以匹配 SQL 中的数据库?
这是我的项目的截图:
【问题讨论】:
标签: sql-server api sql-update visual-studio-2019
到 VS 2019,我创建了一个 API 项目(首先是数据库),一切都运行良好,现在我在数据库中进行了一些更改,例如添加新表和一些属性以及修改其他人的数据类型等等..,问题是如何更新模型以匹配 SQL 中的数据库?
这是我的项目的截图:
【问题讨论】:
标签: sql-server api sql-update visual-studio-2019
尝试通过带有“Force”参数的 Scaffold-DbContext 重新创建您的模型。
Scaffold-DbContext "Data Source=yoursource;Initial Catalog=yourdb;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Model -Force
【讨论】:
来自文档:
https://docs.microsoft.com/en-us/ef/ef6/modeling/designer/workflows/database-first
第一步是对数据库架构进行一些更改。我们将向架构中添加一个用户表。
CREATE TABLE [dbo].[Users]
(
[Username] NVARCHAR(50) NOT NULL PRIMARY KEY,
[DisplayName] NVARCHAR(MAX) NULL
)
现在架构已更新,是时候使用这些更改更新模型了。
在更新向导的添加选项卡上,选中表旁边的框,这表明我们要从架构中添加任何新表。 刷新选项卡显示模型中的所有现有表,这些表将在更新期间检查更改。删除选项卡显示已从模式中删除的所有表,并且也将作为更新的一部分从模型中删除。这两个选项卡上的信息是自动检测的,仅供参考,您不能更改任何设置。
单击更新向导上的完成
模型现在更新为包含一个新的用户实体,该实体映射到我们添加到数据库中的用户表。
【讨论】:
Right-click on an empty spot of your model in the EF Designer and select ‘Update Model from Database…’, this will launch the Update Wizard...这一步的问题(在我附加的img中)怎么做?
Hi I am Considering you are using EFCore, please confirm !!
As per available information over internet
EF core for DB first ( from db to EF ) approach to Modify new/existing entity
您需要按照以下步骤操作:
EF 模型需要使用 Force 标志运行 Scaffold,这将删除所有 您在模型中的本地更改 (对我来说是 IdentityDBContext 并覆盖 identityUser 更改)
运行所有模型迁移后
运行所有迁移将使所有内容同步 bw EF 和 DB
现在您需要再次对解决方案进行本地更改 (对我来说更新 IdentityDBContext 并覆盖 identityUser 更改 恢复到数据库更改之前的状态)
【讨论】: