2015-07-27 4 views
7

У меня есть веб-приложение, которое я устанавливаю на компьютеры своих клиентов для их внутреннего использования. Я использую C# MVC5 и кодовую Entity Framework. Я использовал автоматическую миграцию = true, но я остановился и установил значение false. Я установил его в производственную среду (выпуск) - с пакетом deploy-package (без Visual Studio).База данных с отказом (отката) с кодовым первым в производственной среде

У меня есть клиент с приложением - версия 1. Теперь я хочу обновить до версии 2. Я хочу включить обновление БД приложения (в производственном файле, с установкой CMD из пакета), но чтобы иметь возможность до сбрасывать DB, если возникнут какие-либо проблемы, но без удаления существующих строк.

Например, если у меня есть таблица «Элементы» и элементы имеют Key, Name, Location. При обновлении я добавляю новый столбец: Email. При понижении - новый столбец будет удален. Я создал миграцию на Visual Studio я получаю этот код (Это просто для примера - у меня больше миграций):

public partial class AddEmail : DbMigration 
    { 
     public override void Up() 
     { 
      AddColumn("dbo.Items", "Email", c => c.String()); 
     } 

     public override void Down() 
     { 
      DropColumn("dbo.Items", "Email"); 
     } 
    } 

Теперь я установил новую версию приложения на существующую версию и она работала прекрасно - новый столбец был добавлен, и он работал с новым кодом. Я добавил несколько элементов (строк).

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

ответ

0

Вы можете вернуться к конкретной миграции с помощью этой техники: https://msdn.microsoft.com/en-us/data/jj591621.aspx#specific

Имейте в виде, что требуется целевая миграция, так что вы должны настроить базовый снимок базы данных с помощью Add-миграция Первоначального -IgnoreChanges (см https://msdn.microsoft.com/en-us/data/dn481501.aspx) В противном случае использовать -TargetMigration Update-Database: 0

Когда откатить будет прервать, если существуют данные в столбцах, так что вам, возможно, потребуется сделать Update-Database -Force

+0

Поскольку у меня нет Visual Studio на компьютере клиента, это не помогло мне, но в следующем разделе этой статьи есть заголовок «Получение сценария SQL» - и это именно то, что мне нужно. Благодаря! – TamarG

13

в this article есть объяснение, как создать экр ipt, которые переносятся с одной миграции на другую - обновление или понижение. Так что я побежал в Package Manager Console -

Update-Database -Script -TargetMigration: MyMigration1

и получил сценарий SQL.

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

 Смежные вопросы

  • Нет связанных вопросов^_^