Я делаю скрипт, который удаляет все таблицы перед тем, как воссоздать их с помощью Entity Framework. Я сделал это, реализовав IDatabaseInitializer, который делает это для меня.
Однако, как вы уже догадались, при попытке удалить таблицу с ограничением внешнего ключа она ошибочно завершается неудачей, и весь сценарий завершается.
Как я могу предотвратить это? Вот как я опускаю столы.
context.Database.ExecuteSqlCommand("EXEC sp_MSforeachtable @command1 = \"DROP TABLE ?\"");
Теперь я поместил это в цикл while, который продолжает выполняться, пока не будут удалены все таблицы. Однако, поскольку эта команда удаляет все таблицы по порядку и завершается неудачно, если не удается удалить первую таблицу, этот сценарий не работает.
Есть ли способ заставить Microsoft SQL Server игнорировать любые ошибки и возобновить удаление таблицы с помощью следующей записи?