EF Core:在服务器重新启动时删除并重新创建数据库

lss*_*lss 2 c# entity-framework-core asp.net-core-mvc asp.net-core

我们有一个带有Entity Framework Core的ASP.NET Core MVC应用程序.我们增加了一个自定义的Testing环境,现有的Development,StagingProduction环境.现在,我们希望每次应用程序在此新的测试环境中启动时,应用程序都会删除并重新创建(或至少截断)数据库.

是否有一种自动化的方式来实现这种行为?或者我是否必须在数据库上下文中手动调用RemoveAll每个DbSet

Dmi*_*try 8

调用dbContext.Database.EnsureDeleted();

确保上下文的数据库不存在.如果它不存在,则不采取任何措施.如果确实存在,则删除数据库.

警告:删除整个数据库,不做任何努力只删除模型为此上下文使用的数据库对象.

然后调用dbContext.Database.Migrate()以创建新的(空)DB并迁移到最新版本.

  • 顺便说一句,在内部生成具有"DROP DATABASE"逻辑的生产代码看起来非常"危险",甚至可以通过一些config/start参数激活.一旦你将其提交回购,你就开始倒计时生产数据库丢弃(由人为错误).相反,在使用测试配置启动应用程序之前,从单独的脚本中删除数据库. (3认同)