Какие изменения необходимы для переноса приложения Entity Framework 4.1 Code First в производство? - PullRequest
4 голосов
/ 07 апреля 2011

Как обсуждено в этой теме , Entity Framework Code First подходит для среды разработки. Итак, какие шаги или изменения необходимо внести в приложение Entity Framework Code First, чтобы перенести его в производство?

  1. Перенос базы данных на рабочий сервер.
  2. Изменить строку подключения в Web.config

Какие-либо изменения, необходимые для инициализации DbContext, чтобы он не мешал в производственной среде? (Или это останется без проблем, поскольку схема базы данных верна из перенесенной базы данных?) Что еще нужно сделать?

Ответы [ 2 ]

5 голосов
/ 12 июня 2011

Вот отличная статья о первом подходе к коду, включая развертывание в нижней части: http://msdn.microsoft.com/en-us/magazine/hh126815.aspx

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

Еще одна вещь, которую вы можете захотеть сделать, это добавить сущность под названием «AppVersion» в контекст первого кода. Затем переопределите метод Seed () вашего DropCreateDatabaseIfModelChanges IDatabaseInitializer, чтобы он записывал текущую версию приложения или, возможно, номер редакции исходного кода, используя непрерывную сборку.

Пример:

public class OrderDbInitializer : DropCreateDatabaseIfModelChanges<OrderContext>
{
    protected override void Seed(OrderContext context)
    {

        context.AppVersion.Add(new AppVersion() {Version = Assembly.GetExecutingAssembly().GetName().Version.ToString()});
        context.SaveChanges();
    }


}

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

Наконец, вы не захотите использовать инициализатор DropCreateDatabaseIfModelChanges в производственной среде, поэтому необходимо использовать config config или какой-либо шаблон Factory.

Надеюсь, это поможет вам дать некоторые идеи.

1 голос
/ 07 апреля 2011

Там нет реальных трюков, специфичных для ef-кода в первую очередь. Это то же самое, что вам нужно сделать, чтобы переместить любую БД, используя любой ORM от теста к продукту.

Ваши шаги выше, кажется, покрывают 95% того, что нужно сделать (я оставляю 5% открытыми на случай, если что-то забуду :))

...