EF Migrations for Database-first подход? - PullRequest
       20

EF Migrations for Database-first подход?

40 голосов
/ 13 февраля 2012

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

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

Ответы [ 4 ]

19 голосов
/ 13 февраля 2012

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

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

4 голосов
/ 26 июля 2013

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

Для этого предположим, что у вас есть следующий 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, что-то похожее на ранее созданный Db DefaultConnection.

Все, что вам может понадобиться, чтобы продолжить свой путь, - это отредактировать YourDbFileName ConStr в соответствии с вашим сервером и другими параметрами.

Подробнееинформация здесь и здесь .

2 голосов
/ 14 марта 2018

Запустив Entity Framework 4.1, вы можете выполнить Code First Migrations с существующей базой данных .

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

Самое главное помнить, что вы должны запустить Enable-Migrations, прежде чем вносить какие-либо изменения в схему, поскольку она должна синхронизироваться между вашей БД и кодом.

0 голосов
/ 06 февраля 2016

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

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

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

throw new UnintentionalCodeFirstException();

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...