C# 在基于代码的EF迁移中是否有任何命令可用于重新创建数据库

C# 在基于代码的EF迁移中是否有任何命令可用于重新创建数据库,c#,asp.net-mvc-4,ef-code-first,entity-framework-migrations,C#,Asp.net Mvc 4,Ef Code First,Entity Framework Migrations,我正在使用ASP.NET MVC4。我正在切换到一个已经存在的测试数据库。是否有任何基于代码的迁移命令来删除和重新创建数据库,例如updatedatabasedropcreate 我不想使用任何数据库初始值设定项,如DropCreateDatabaseIfModelChanges,因为当我切换回实时数据库时,我必须手动删除初始值设定项代码。是否有其他方法来实现这一点,以便在以后使用live数据库时不必进行任何更改 我尝试了更新数据库-force,但它不会重新创建数据库。如果您通过迁移命令执行此操

我正在使用ASP.NET MVC4。我正在切换到一个已经存在的测试数据库。是否有任何基于代码的迁移命令来删除和重新创建数据库,例如updatedatabasedropcreate

我不想使用任何数据库初始值设定项,如DropCreateDatabaseIfModelChanges,因为当我切换回实时数据库时,我必须手动删除初始值设定项代码。是否有其他方法来实现这一点,以便在以后使用live数据库时不必进行任何更改


我尝试了更新数据库-force,但它不会重新创建数据库。

如果您通过迁移命令执行此操作,则只需使用-TargetMigration 0运行该命令,然后再次执行更新数据库。

如果您使用依赖项注入并使用容器注入上下文类,则可以为其创建不同的上下文使用初始化策略测试数据库,并保留原始数据库,因为您所要做的就是更改注入的上下文,甚至添加上下文工厂,以根据环境创建特定的上下文


如果这很复杂,那么另一种方法是将初始化策略添加到您的上下文中,并添加一个条件来检查这是测试服务器还是生产服务器。据我所知,您可以从上下文中获取的连接字符串中知道,您希望在现有数据库上应用迁移吗?您可以通过context.Database.MigrateAsync实现这一点,或者只需在appsettings.json中添加config部分来指示您是否正在使用development env。并在dev only上触发方法,并在env的其余部分上更改该设置。进行备份,以防万一:另外,出于任何原因,只需在SSMS中的DB上右键单击Delete,并删除现有连接,就可以了?意思是你需要一个命令来做这件事吗?只要运行更新数据库,您就可以返回。我使用live数据库创建了多个迁移。为了重新创建测试数据库,一个接一个地运行所有-TargetMigrations有什么意义?不,不是一个接一个地运行。运行两个命令:1更新数据库-TargetMigration 0和2更新数据库。第一个将全部回滚这是我假设您要清除数据,第二个将创建模式和查找数据(如果在迁移中我对您的答案做了一些编辑)。请检查确认;如果您觉得需要,请进一步编辑。谢谢;如果您可以为上述两种方法粘贴一些代码片段,这将非常有用。