Я использую EF Code First с EF 5 в VS 2012. Я использую update-database
команду PM и у меня есть простой метод начального числа для заполнения некоторых таблиц образцами данных.
Я хочу удалить и заново создать свой x.mdb. Похоже, что история обновлений не синхронизирована. Если я закомментирую все свои DBSet в моем контексте, update-database
запускается без ошибок, но оставляет некоторые таблицы в БД. Поскольку у меня нет ценных данных в БД, проще всего сбросить все настройки.
Как я могу этого добиться?
источник
Если вы сработали правильный способ создания своих миграций с помощью команды,
Add-Migration "Name_Of_Migration"
вы можете сделать следующее, чтобы получить чистый старт (сброс, конечно , с потерей данных ):Update-database -TargetMigration:0
Обычно ваша БД сейчас пуста, так как были выполнены методы down.
Update-database
Это воссоздает вашу БД для текущей миграции.
источник
Единый лайнер для удаления, создания и заполнения из консоли диспетчера пакетов:
update-database -TargetMigration:0 | update-database -force
Кабум.
источник
Update-Database 0
. Тем не менее, это не подходит для случая OP, когда «История обновлений, кажется, не синхронизирована» ; этот подход работает, выполняя миграцию «вниз» для каждой миграции, примененной к базе данных, поэтому, если вы удалили миграцию, которая была применена ранее, это приведет к сбою (и может также не получиться, если вы изменили миграцию после применяя это). Общепринятый ответ является более надежным. -1 за это и за необъяснимое повторениеupdate-database -force
.Для EntityFrameworkCore вы можете использовать следующее:
Update-Database -Migration 0
Это удалит все миграции из базы данных. Тогда вы можете использовать:
Чтобы удалить вашу миграцию. Наконец, вы можете воссоздать миграцию и применить ее к базе данных.
Add-Migration Initialize Update-Database
Протестировано на EFCore v2.1.0
источник
Как насчет ..
static void Main(string[] args) { Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>()); // C // o // d // i // n // g }
Я взял это из Programming Entity Framework: Code First , Pg 28 First Edition.
источник
Если вы создали свою базу данных, следуя этому руководству: https://msdn.microsoft.com/en-au/data/jj193542.aspx
... тогда это может сработать:
.mdf
и.ldf
файлы в директории проектаисточник
Сделайте следующие шаги:
Dbset<Item> Items{get;set;}
и в консоли Nuget выполните эти командыОн удалит таблицы, которые не существуют в контексте, но уже созданы в базе данных.
источник
dbctx.Database.EnsureDeleted (); dbctx.Database.EnsureCreated ();
источник
Позвольте мне помочь в обновлении ответов здесь, так как новые пользователи сочтут это полезным. Я считаю, что цель состоит в том, чтобы удалить саму базу данных и воссоздать ее с использованием подхода EF Code First. 1. Откройте свой проект в Visual Studio, используя расширение ".sln". 2. Выберите Server Explorer (часто слева) 3. Выберите SQL Server Object Explorer. 4. База данных, которую вы хотите удалить, будет указана в любом из localDB. Щелкните его правой кнопкой мыши и выберите удалить.
источник
update-database
, и поскольку он упоминает раздачу, я предполагаю, что они искали автоматическое решение для тестирования. Поэтому ваше UI-решение, вероятно, не то, что они ищут.Есть много способов удалить базу данных или обновить существующую, просто вы можете переключиться на предыдущие миграции.
dotnet ef database update previousMigraionName
Но у некоторых баз данных есть ограничения, такие как запрет на изменение после создания отношений, это означает, что вы не разрешаете привилегиям удалять столбцы от поставщиков баз данных ef, но большую часть времени в базе данных сброса ядра ef разрешено. Поэтому вы можете удалить БД с помощью команды drop, а затем вы снова используете предыдущую миграцию.
dotnet ef database drop PMC command PM> drop-database
ИЛИ вы можете вручную удалить базу данных и выполнить миграцию.
источник
Поскольку однажды на этот вопрос будут нажимать новые пользователи EF Core, и я считаю, что основные ответы несколько излишне деструктивны, я покажу вам способ начать «все заново». Остерегайтесь, это удалит все ваши данные.
dotnet ef database update
источник