我在互联网上进行了搜索,堆栈溢出,但我对实体框架迁移的神秘感到迷失。
我有现有的数据库。我添加了三个与 AspNetUsers 表有一定关系的新表。
我尝试了两种方法使用 pmc 将这些表添加到数据库中。 首先注释掉 dbcontext 中的所有新表,然后使用以下命令。
Add-migration initial -ignorechanges
然后从 dbcontext 中取消注释表并运行 update-database 命令。结果没有添加新表。
然后我删除迁移历史记录表中的所有条目并删除迁移文件夹并从头开始。
enable-migrations -EnableAutomaticMigrations
Add-migration bcvn
update-database -verbose
现在,当我运行更新数据库时,它说数据库中已经有一个名为“AspNetUsers”的对象。发现这篇文章很有帮助,但就我而言,up 方法中的 AspNetUsers 表没有发生任何更改,因此我可以按照此操作文章http://blog.rajsoftware.com/2014/07/12/entity-framework-code-first-automatic-migration-existing-tables/请有人救救我。也许我会收到很多反对票。但是我不在乎,我想要解决方案。
成功了。技巧是注释掉与新表相关的所有代码,尤其是我之前没有对 ApplicationUser 类执行的关系相关代码
Add-migration initial -ignorechanges
然后取消所有代码的注释然后
update-database -verbose
我之前唯一没有做的就是像这样注释掉关系--
// public virtual Notification Notifications { get; set; }
并在通知表中
// public virtual ApplicationUser ApplicationUser { get; set; }
可能对某人也有帮助。
删除 Database.EnsureCreated(); 迁移开始时,应用程序也启动并创建数据库