几周前,我在项目上启用了迁移,并在AspNetUsers表中添加了一列"ClientID"。
现在我正在尝试添加另一列:"名称"。
我在包管理器控制台中运行了以下命令:
PM> Add-Migration "Name"
我收到以下错误:
无法生成显式迁移,因为以下原因 显式迁移挂起:[20161081751088_InitialCreate, 20161091825212_ClientID]。应用挂起的显式迁移 在尝试生成新的显式迁移之前。
我运行了一个更新命令:
PM> Update-Database
但:
数据库中已经有一个名为"AspNetRoles"的对象。
我在网上研究并找到了这个解决方案:
PM> Add-Migration InitialMigrations -IgnoreChanges
但后来我又遇到了第一个错误:
无法生成显式迁移,因为以下原因 显式迁移挂起:[20161081751088_InitialCreate, 20161091825212_ClientID]。应用挂起的显式迁移 在尝试生成新的显式迁移之前。
如何解决这个问题?
-
删除项目中的"迁移"文件夹
-
从数据库中删除
_MigrationHistory
表。 - 从程序包管理器控制台运行
Enable-Migrations
命令。 - 运行
Add-Migration Init
命令以创建迁移。 - 删除
Up()
函数中的所有代码行以进行初始迁移。(创建空迁移并解决您面临的错误。 - 运行
Update-Database
命令以应用空迁移。 - 对代码优先模型进行更改,以准备添加实际迁移。
- 运行
Add-Migration InitNew
命令以创建新的迁移。 - 运行
Update-Database
命令以应用更改。
首先请尝试这些:
- 1-清理项目根目录
- 2-关闭视觉工作室
- 3-重新打开VS并打开解决方案
- 4-建造它。
- 5-完全删除实体文件夹下的迁移文件夹
- 6-移除桌子 从数据库_projectnameMigrations
- 7-在VS中打开PMC
- 8-启用迁移
- 9-添加迁移mig_Myinit
- 10- (!重要)清除up方法并将其设为空
- 11-更新数据库
- 12- 完成
您的下一次迁移... 要点是,如果从数据库中手动删除表,则实体框架无法识别它,默认情况下它是可访问的,因此在使用 EF 时,必须从 pmc 执行任何与数据库相关的任务。