Asp.net mvc EF代码首先来自具有IdentityDbContext的数据库

Asp.net mvc EF代码首先来自具有IdentityDbContext的数据库,asp.net-mvc,entity-framework-6,entity-framework-migrations,Asp.net Mvc,Entity Framework 6,Entity Framework Migrations,使用VS2017,我在数据库中几乎没有带约束的相关表。我创建了带有个人用户帐户选项的空白MVC/WebAPI项目,安装了EF6.2.0,使用“数据库模型中的代码优先”技术从数据库导入实体,在重写的OnModelCreating()中为标识用户、角色和登录添加了密钥并创建了第一次迁移。迁移声明了所有标识表(用户、角色等),但也声明了数据库中已经存在的表,这是可以理解的。当我尝试更新数据库时,我得到一个异常,表示表已经在数据库中。解决此问题的最佳做法是什么?我正在考虑在迁移中注释掉表,只留下标识表。

使用VS2017,我在数据库中几乎没有带约束的相关表。我创建了带有个人用户帐户选项的空白MVC/WebAPI项目,安装了EF6.2.0,使用“数据库模型中的代码优先”技术从数据库导入实体,在重写的OnModelCreating()中为标识用户、角色和登录添加了密钥并创建了第一次迁移。迁移声明了所有标识表(用户、角色等),但也声明了数据库中已经存在的表,这是可以理解的。当我尝试更新数据库时,我得到一个异常,表示表已经在数据库中。解决此问题的最佳做法是什么?我正在考虑在迁移中注释掉表,只留下标识表。

这可能是因为您的迁移独立于内部标识迁移。也就是说,当您创建第一次迁移时,它假定数据库仍然为空,因此将创建所有表。只需尝试切换到新的空白数据库(使用新的数据库名称)或删除当前数据库即可生成模型类和关系,然后在运行迁移之前删除现有数据库或使用不同的数据库。我还可以注释掉所有数据库集和整个OnModelCreating()函数在我的上下文中获取迁移,而我的域模型不包含唯一标识表,然后使用'-ignorechanges'创建第二个虚拟迁移,但这并不是解决此问题的正确方法。我也是这么做的