Удаление базы данных, используемой с EF Core - PullRequest
2 голосов
/ 10 апреля 2019

Мне нужно программно удалить базовую базу данных EF.Нет проблем, верно?Получите контекст, вызовите ctx.Database.EnsureDeleted (), и все готово.

За исключением случаев, когда БД используется, вы используете пул соединений (есть веская причина для этого), вы можете столкнуться с ситуацией, когда вы не можете удалить базу данных.

Еще в дни EF6 у меня был собственный инициализатор БД, который переопределял 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 core 2.1?

...