我需要以编程方式删除 EF 核心数据库。没问题,对吧?获取上下文,调用 ctx.Database.EnsureDeleted(),一切就绪。
除了..当数据库正在使用时,您正在使用连接池(这样做有充分的理由),您可能会遇到无法删除数据库的情况。
回到 EF6 时代,我有一个自定义 DB 初始化程序,它按如下方式覆盖 InitializeDatabase(将数据库设置为单用户模式,这样其他连接就不会干扰)
public override void InitializeDatabase(AudmDatabaseContext context)
{
context.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction
, string.Format("ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE", context.Database.Connection.Database));
base.InitializeDatabase(context);
}
现在我想知道..您如何使用 EF 核心 2.1 做到这一点(或其他让我获得相同效果的东西)?