Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用EnsureCreatedAsync后的MigrateAsync_C#_Asp.net Core Mvc_Entity Framework Core - Fatal编程技术网

C# 使用EnsureCreatedAsync后的MigrateAsync

C# 使用EnsureCreatedAsync后的MigrateAsync,c#,asp.net-core-mvc,entity-framework-core,C#,Asp.net Core Mvc,Entity Framework Core,我有一个asp.net核心mvc网站正在制作中。 DbInitializer正在使用以下代码:wait context.Database.EnsureCreatedAsync() 现在我发现没有应用迁移,我看到了这一点: 此外,创建的数据库以后无法更新 使用迁移 我已将代码更改为wait context.Database.migrateSync(),但没有应用任何迁移,并且在我的数据库dbo中。\u EFMigrationsHistory我没有看到任何记录 注意:我的解决方案在Migration

我有一个asp.net核心mvc网站正在制作中。 DbInitializer正在使用以下代码:
wait context.Database.EnsureCreatedAsync()

现在我发现没有应用迁移,我看到了这一点:

此外,创建的数据库以后无法更新 使用迁移

我已将代码更改为
wait context.Database.migrateSync()
,但没有应用任何迁移,并且在我的数据库dbo中。\u EFMigrationsHistory我没有看到任何记录

注意:我的解决方案在Migrations文件夹中已经有4个迁移类,但它们是在MigrationHistory中添加的。其中3个是应用的,因为我曾经重新创建过数据库(仍然使用ensurecreated)。上次迁移没有应用,因为我现在没有重新创建数据库,因为它包含数据,并且迁移现在没有应用,因为我在“EnsureCreatedAsync”之前使用过


我现在如何在现有数据库中应用并开始使用迁移而不丢失任何数据库数据?

发现这是不可能的(希望我错了)

  • 使用SSMS创建了数据库的备份
  • 从包含数据的表生成数据库的脚本。因此,我将所有insert语句都保存在一个.sql文件中
  • 删除数据库,创建新的空数据库,确保安全性(分配数据库用户)正常
  • visual studio已从未应用的解决方案中删除所有迁移
  • 从我的解决方案中删除了种子设定数据(以便以后不会与.sql脚本中的insert语句冲突以将数据放回)
  • 通过执行“添加迁移初始值”再次启用迁移
  • 尝试在我的开发/调试数据库上使用更新数据库进行迁移
  • 发布网站并在Web服务器上提供
  • 在IIS中启动网站,并在SSMS中验证是否正确创建了我的所有表,以及_migrationhistory是否包含我的初始迁移
  • 打开SSMS并从.sql运行我的查询,再次添加了所有INSERT语句-->所有数据

  • 现在,我的(新)数据库已启用迁移。微软万岁

    发现这是不可能的(希望我错了)

  • 使用SSMS创建了数据库的备份
  • 从包含数据的表生成数据库的脚本。因此,我将所有insert语句都保存在一个.sql文件中
  • 删除数据库,创建新的空数据库,确保安全性(分配数据库用户)正常
  • visual studio已从未应用的解决方案中删除所有迁移
  • 从我的解决方案中删除了种子设定数据(以便以后不会与.sql脚本中的insert语句冲突以将数据放回)
  • 通过执行“添加迁移初始值”再次启用迁移
  • 尝试在我的开发/调试数据库上使用更新数据库进行迁移
  • 发布网站并在Web服务器上提供
  • 在IIS中启动网站,并在SSMS中验证是否正确创建了我的所有表,以及_migrationhistory是否包含我的初始迁移
  • 打开SSMS并从.sql运行我的查询,再次添加了所有INSERT语句-->所有数据
  • 现在,我的(新)数据库已启用迁移。微软万岁

    请参阅:特别注意,如果您最初调用了
    EnsureCreated
    ,“以后无法使用迁移更新创建的数据库”请参阅:特别注意,如果您最初调用
    EnsureCreated
    ,“以后无法使用迁移更新创建的数据库”