1. 使用此命令创建迁移:"Add-Migration -Name CodingSoldierDbContextMigration -OutputDir Migrations -Context CodingSoldierDbContext" 2. 使用此命令更新数据库:"Update-Database -Migration CodingSoldierDbContextMigration -Context CodingSoldierDbContext"。该数据库中成功创建了表格。 3. 现在,我需要向现有表格添加一个新列。我在 .cs 文件中将该列添加到模型中,并删除了现有的迁移:"Remove-Migration -Force -Context CodingSoldierDbContext"。 4. 现在,我重新运行步骤 1 和 2 中的命令。Add-Migration 能够工作并创建出迁移。但是,Update-Database 失败并显示错误消息:"There is already an object named 'AspNetRoles' in the database." 这意味着表格已经存在于数据库中,这是很有道理的。
那么,我该如何更新已经存在的表格呢?我能想到的两种方法是:
1. 删除数据库。创建迁移并更新数据库。但这样会导致所有数据丢失。 2. 在模型中添加列。使用 SQL 脚本手动更新表格以添加新列。
但我觉得应该有更好的方法来完成这个任务。
Update-Database
。不要使用Remove-Migration
,特别是带有-Force
标志 - 这只适用于特殊情况。 - Ivan StoevRemove-Migration
命令会要求您首先回滚数据库中的迁移(即执行Down
方法命令)。而您所采取的方式是,“新”的迁移尝试执行已经在数据库中完成的操作(例如创建已经存在的表),因此会引发异常。 - Ivan Stoev