Как удалить и воссоздать с нуля существующую базу данных EF Code First
Я использую EF Code First с EF 5 в VS 2012. Я использую команду PM update-database
, и у меня есть простой метод семени, чтобы заполнить некоторые таблицы примерами данных.
Я хотел бы удалить и воссоздать свой x.mdb. История обновлений, похоже, не синхронизирована. Если я прокомментирую все свои DBSets в моем контексте, update-database
работает без ошибок, но оставляет некоторые таблицы в БД. Поскольку у меня нет ценных данных в БД, это кажется самым простым для reset всем.
Как я могу это сделать?
Ответы
Ответ 1
Если я понимаю это правильно...
Если вы хотите start clean
:
1) Вручную удалите свой БД - где бы он ни находился (я предполагаю, что у вас есть сортировка вашего соединения) или пустым, но проще/безопаснее удалить все вместе - так как есть system __MigrationHistory
table - вам тоже нужно удалить.
2) Удалите все migration files
- которые находятся под Migrations
- и называются номерами и т.д. - удалите их все,
3) Восстановите свой проект, содержащий миграции (и остальные), - и убедитесь, что ваш проект настроен для автоматической сборки (что иногда может вызвать проблемы, но маловероятно для вас),
4) Запустите Add-Migration Initial
снова - затем Update-Database
Ответ 2
Если вы создали правильный путь для создания своих миграций с помощью команды Add-Migration "Name_Of_Migration"
, вы можете сделать следующее, чтобы получить чистый старт (reset, с потерей данных, конечно):
-
Update-database -TargetMigration:0
Обычно ваша БД пуста, поскольку выполнялись методы down.
-
Update-database
Это восстановит вашу БД до текущей миграции
Ответ 3
Одиночный вкладыш для удаления, создания и посева из консоли диспетчера пакетов:
update-database -TargetMigration:0 | update-database -force
Kaboom.
Ответ 4
Для EntityFrameworkCore вы можете использовать следующее:
Update-Database -Migration 0
Это приведет к удалению всех миграций из базы данных. Затем вы можете использовать:
Remove-Migration
Чтобы удалить миграцию. Наконец, вы можете воссоздать свою миграцию и применить ее к базе данных.
Add-Migration Initialize
Update-Database
Проверено на EFCore v2.1.0
Ответ 5
Как насчет..
static void Main(string[] args)
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>());
// C
// o
// d
// i
// n
// g
}
Я выбрал это из Программирование Entity Framework: сначала код, Pg 28 First Edition.
Ответ 6
Если вы создали свою базу данных в соответствии с этим руководством: https://msdn.microsoft.com/en-au/data/jj193542.aspx
... тогда это может сработать:
- Удалите все файлы
.mdf
и .ldf
в каталоге проекта
- Перейдите в View/SQL Server Object Explorer и удалите базу данных из подкаталога (localdb)\v11.0. См. Также fooobar.com/questions/43499/...
Ответ 7
Выполните следующие шаги:
- Удалить объект, который должен быть удален из контекста //
Dbset<Item> Items{get;set;}
и в Nuget Console выполните следующие команды
- add-migration [contextName]
- update-database -verbose
Откроется таблица (таблицы), которая не существует в Контексте, но уже создана в базе данных
Ответ 8
dbctx.Database.EnsureDeleted(); dbctx.Database.EnsureCreated();