数据库优先-尝试重新创建存在的我的实体

本文关键字:创建 存在 实体 我的 新创建 数据库 | 更新日期: 2023-09-27 18:16:36

我正在尝试将我的应用程序连接到现有的应用程序。所以我首先用实体框架数据库创建了实体。

它创建了我所有的实体和Context这很好。但是,当我试图运行它告诉我,我的迁移不是最新的,所以我试图添加迁移测试,看看缺少什么…

它正在创建所有的表,我要求它从DataBase First…

我不能重新创建那些表,我只想能够连接到那些表…

我绝对需要连接到那些表,我不能创建一个新的,我不能克隆数据库。

我怎样才能做到这一点?我没有找到任何关于这个主题从头到尾的资料。

如果有人帮忙就太好了!

数据库优先-尝试重新创建存在的我的实体

问题:您不能重置数据库中现有表的迁移,因为EF想从头创建表。

怎么做:

删除Migrations_History表中已有的迁移。

删除migrations文件夹中已有的迁移。

运行add-migration Reset。这将在migration文件夹中创建一个迁移,其中包括创建表(但它不会运行它,因此不会出错)

您现在需要在MigrationHistory表中创建初始行,以便EF拥有当前状态的快照。如果您应用迁移,EF将执行此操作。但是,您不能应用刚才进行的迁移,因为这些表已经存在于数据库中。因此,进入Migration并注释掉"Up"方法中的所有代码。

现在运行update-database。它将应用迁移(而不实际更改数据库)并在MigrationHistory中创建快照行。

您现在已经重置了您的迁移,并且可以继续进行正常的迁移。