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

问题描述:

我们有一个ASP.NET Core MVC应用程序,其中包含Entity Framework Core。我们在现有的DevelopmentStagingProduction环境中添加了自定义的Testing环境。现在,我们希望应用程序在每次应用程序在这个新的测试环境中启动时删除并重新创建(或至少截断)数据库。EF Core:服务器重新启动时删除并重新创建数据库

有没有一种自动化的方式如何实现这种行为?或者我必须在数据库上下文中的每个DbSet上手动拨打RemoveAll

呼叫dbContext.Database.EnsureDeleted();

确保了上下文中的数据库不存在。如果它不存在 ,则不采取任何操作。如果确实存在,则删除数据库 。

警告:整个数据库都会被删除,并且不会努力删除 模型仅用于该上下文的数据库对象。

然后致电dbContext.Database.Migrate()创建新的(空的)数据库并迁移到最新版本。

+1

顺便说一句,在内部有“DROP DATABASE”逻辑的生产代码看起来非常“危险”,甚至由某些config/start参数激活。一旦您将此操作回购,您将开始倒计时生产数据库丢失(由于人为错误)。相反,在使用测试配置凝视您的应用之前,请从单独的脚本中删除数据库 – Dmitry