Подтвердить что ты не робот

Как отключить первые миграции кода

В EF5 есть первая модель сущности кода. Но я хочу управлять изменениями базы данных вручную - я не хочу, чтобы EF изменял мою существующую базу данных и все ее данные. Но когда я делаю параллельные изменения в EF-сопоставлении и в базе данных, EF отказывается работать должным образом, говоря мне, что мне нужно использовать первую миграцию кода. Как отключить это?

4b9b3361

Ответ 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

Я просто решил эту проблему

  1. Удаление таблицы "_MigrationHistory" из базы данных.
  2. Удаление проекта из папки "Миграции".
  3. Обновление файла EDMX.
  4. Очистите проект и перестройте его.

Моя окружающая среда

1. Visual Studio 2017 15.8.2
2. ASP NET MVC project
3. .NET Framework 4.6.1
4. Entity Framework 6.2.0