Entity framework core EF 7迁移到现有数据库
我正在使用ASP.NET5和EF7进行一个web项目 我已将现有数据库中的所有表导入到项目中的模型中。但是,我在迁移方面遇到了问题 我已经创建了初始迁移,对特定实体进行了一些更改,在我所做的更改之后创建了另一个迁移,现在希望将更改应用于数据库 运行以下命令后:Entity framework core EF 7迁移到现有数据库,entity-framework-core,entity-framework-migrations,asp.net5,Entity Framework Core,Entity Framework Migrations,Asp.net5,我正在使用ASP.NET5和EF7进行一个web项目 我已将现有数据库中的所有表导入到项目中的模型中。但是,我在迁移方面遇到了问题 我已经创建了初始迁移,对特定实体进行了一些更改,在我所做的更改之后创建了另一个迁移,现在希望将更改应用于数据库 运行以下命令后: dnx ef数据库更新[迁移] dnx正在尝试对数据库中已存在的所有实体应用“初始”迁移,这会导致如下错误: {数据库中已存在名为['EntityName']的对象。} 您能否就如何在现有数据库上进行迁移提供建议 谢谢 Saeed在EF6
dnx ef数据库更新[迁移]
dnx正在尝试对数据库中已存在的所有实体应用“初始”迁移,这会导致如下错误:
{数据库中已存在名为['EntityName']的对象。}
您能否就如何在现有数据库上进行迁移提供建议
谢谢
Saeed在EF6中,您将使用
-IgnoreChanges
标志运行迁移,它将在不使用任何Up()
代码的情况下拍摄模型快照。如图所示,EF 7(EF核心)中缺少此项
目前的解决方法是从迁移的
Up()
代码中删除或注释掉现有数据库对象的代码,然后更新数据库。随后的迁移将只包括更改 如果您坚信,新(EF7)数据库模式将与旧数据库模式匹配(包括索引和键名)-您可以运行“初始”迁移到空(临时)数据库,然后将\u EFMigrationHistory
表从那里复制到您的真实数据库
否则,我建议您使用迁移创建空数据库,并使用sqlinsert-into。。。选择
命令从旧数据库复制数据。否则,您将在以后升级数据库时收到异常-例如,更改索引将导致DropIndex
和CreateIndex
迁移命令,并且DropIndex
将失败,因为没有具有此名称的索引(索引存在于其他EF7之前的名称中)
在我的项目中-旧的(来自EF6)和新的数据库方案是不同的,我使用了第二个选项。两天后,我找到了一种不在谷歌和互联网上的EFCore方法 我的步骤是如何工作的 当您有一个包含10个表的数据库,并且在tables中有您不想清除的数据时。在此之后,您将首先在代码中创建新模型并运行到现有数据库,您将得到错误“无效的对象名称'tableName'对于查询到新表,并且您希望创建迁移并将其更新到现有数据库,但第一次迁移将为旧表和新表创建所有查询,如果您运行更新数据库,您将获得“数据库中已经有一个名为['EntityName']的对象”。对于初始迁移 如何修复它
我希望这能帮助一些人。是的,我就是这么做的——尽管为了纠正索引问题,我使用了RedGates Sql Compare来管理轮班(尽管你也可以轻松地使用Visual Studio SSDT工具和模式比较)