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

EF Миграции для первого подхода к базе данных?

Мы используем первый подход к базе данных с EntityFramework. У нас несколько клиентов, и когда мы развертываем новую версию продукта, мы теперь применяем изменения схемы БД "вручную" с помощью таких инструментов, как SQL Compare.

Есть ли способ, каким образом EF Migrations может помочь автоматически вносить изменения в клиентскую БД?

4b9b3361

Ответ 1

Насколько я знаю, EF Migrations является продуктом, ориентированным на CodeFirst и не поддерживает операции Database First.

CodeFirst предполагает, что вы никогда не внесете никаких изменений вручную в базу данных. Все изменения в базе данных будут проходить через первые миграции кода.

Ответ 2

Я думаю, что есть! Сначала вам нужно продолжить свой код.

Чтобы сделать это, предположим, что у вас есть следующий DbContext, который EF Db сначала создал для вас:

public class MyDbContext : DbContext
{
    public MyDbContext()
        : base("Name=DefaultConnection")
    {

    }

    // DbSets ...
}

измените это на следующее, чтобы начать использовать первый и все магические инструменты (миграция и т.д.):

public class MyDbContext : DbContext
{
    public MyDbContext()
        : base("YourDbFileName")
    {

    }

    // DbSets ...
}

Это приводит к тому, что EF создает новую строку соединения с использованием SQL Express на вашем локальном компьютере в вашем файле web.config с именем YourDbFileName, что-то вроде ранней версии DefaultConnection Db, созданной вначале.

Все, что вам может понадобиться, чтобы продолжить свой путь, заключается в том, что вы редактируете ConDr в соответствии с вашим сервером и другими параметрами.

Подробнее здесь и здесь.

Ответ 3

Просто найдите дочерний объект DbContext и найдите этот метод:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

Если вы прокомментируете это:

throw new UnintentionalCodeFirstException();

то исключение не будет выбрано при операции миграции. Как вы можете себе представить, миграция ищет эту часть, чтобы узнать, какие конфигурации для каждого объекта имеют таблица или таблицы.

Извините, если я не поеду с более подробной информацией, если вы хотите больше, я буду рад изменить это и сделать его лучше!