В EF5 есть первая модель сущности кода. Но я хочу управлять изменениями базы данных вручную - я не хочу, чтобы EF изменял мою существующую базу данных и все ее данные. Но когда я делаю параллельные изменения в EF-сопоставлении и в базе данных, EF отказывается работать должным образом, говоря мне, что мне нужно использовать первую миграцию кода. Как отключить это?
Как отключить первые миграции кода
Ответ 1
установите для Database.SetInitializer значение null.
public class DatabaseContext: DbContext
{
//the base accepts the name of the connection string provided in the web.config as a parameter
public DatabaseContext()
: base("DatabaseContext")
{
//disable initializer
Database.SetInitializer<DatabaseContext>(null);
}
Ответ 2
Итак, самый полный ответ, который я нашел, таков:
- Удалить
Migrations
папку внутри вашего проекта. - Установите
Database.SetInitializer<DatabaseContext>(null);
внутри инициализатора DatabaseContext. - Удалить таблицу
__MigrationHistory
внутри вашей базы данных. Для EF6 + таблица находится вTables
, но для более ранних версий она находится подSystem Tables
. - Сборка и запуск.
- Profit.
Ответ 3
Если вы хотите полностью отключить миграцию:
fooobar.com/questions/28080/...
Тем не менее, мне было лучше сохранить включенность первых миграций кода, но используйте параметр -Script
, чтобы EF создал изменение базы данных script для меня, что я могу применить к каждой базе данных (разработка, QA, Production) вручную
Update-Database -Script -ProjectName MyProject -StartupProjectName MyProject
Таким образом, EF создаст для меня изменение script, и у меня все еще есть полный контроль над применяемыми изменениями. Я использую сценарии изменений, как и любой другой исходный код.
Ответ 4
Если вы уже использовали Migrations, тогда изменение только Initializer не поможет. Вам нужно перейти в Management Studio, открыть таблицы базы данных, перейти в папку System Tables
и удалить таблицу __MigrationHistory
, которая находится там (для EF6 и выше она расположена непосредственно под Tables
). Это приведет к отключению миграции навсегда.
Ответ 5
Я просто решил эту проблему
- Удаление таблицы "_MigrationHistory" из базы данных.
- Удаление проекта из папки "Миграции".
- Обновление файла EDMX.
- Очистите проект и перестройте его.
Моя окружающая среда
1. Visual Studio 2017 15.8.2
2. ASP NET MVC project
3. .NET Framework 4.6.1
4. Entity Framework 6.2.0