2014-08-27 6 views
8

Я унаследовал проект, который использует FluentMigrator для управления миграциями. Первоначально проект выполнял миграцию в процессе при запуске приложения, но I.T. , и теперь мы должны предоставить сценарии администратору баз данных для всех наших изменений в базе данных.FluentMigrator не работает миграции

В рамках этого перехода я перенес миграции в новый проект под названием «Миграции». Когда я пытаюсь выполнить миграции с помощью инструмента командной строки, это работает, но в базу данных не применяются миграции. Строка базы данных верна, потому что если таблица VersionInfo не существует, она создается. enter image description here

Существует несколько миграций, но большинство из них очень просты. Вот пример первого:

enter image description here

Я использую SQL Server 2012 и FluentMigrator 1.2.1.

Вот командная строка в тексте для gunr2171:

.\Packages\FluentMigrator.1.2.1.0\tools\migrate.exe -c "Data Source=.;Integrated Security=True;Initial Catalog=portal_test" -db sqlserver2012 -a .\source\Migrations\bin\Debug\migrations.dll 

И миграция образца:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using FluentMigrator; 

namespace Migrations 
{ 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores")] 
    [Migration(1)] 
    public class M001_CreateAccountTable : Migration 
    { 
     public override void Up() 
     { 
      Create.Table("Accounts") 
       .WithColumn("Id").AsInt32().NotNullable().Identity().Unique() 
       .WithColumn("PartnerCode").AsString().Nullable() 
       .WithColumn("AccountType").AsInt32().NotNullable() 
       .WithColumn("Code").AsString().NotNullable().Unique().PrimaryKey() 
       .WithColumn("Name").AsString().NotNullable() 
       .WithColumn("PrimaryDomainName").AsString().Nullable() 
       .WithColumn("IsFederated").AsBoolean().NotNullable() 
       .WithColumn("IsActive").AsBoolean().Nullable().WithDefaultValue(1) 
       .WithColumn("FederatedEndpoint").AsString().Nullable() 
       .WithColumn("CreatedBy").AsString().NotNullable() 
       .WithColumn("CreatedOn").AsDateTime().NotNullable().WithDefaultValue(DateTime.Now) 
       .WithColumn("ModifiedBy").AsString().NotNullable() 
       .WithColumn("ModifiedOn").AsDateTime().NotNullable().WithDefaultValue(DateTime.Now); 
     } 

     public override void Down() 
     { 
      Delete.Table("Accounts"); 
     } 
    } 
} 
+1

Есть ли предыдущие миграции в таблице VersionInfo? Вы строите dll миграции в качестве отладки (а не выпуска) в Visual Studio? –

+1

Вы когда-нибудь дошли до конца? –

ответ

5

я получаю то же самое, и оказалось, что сборка с миграция в нем была написана с использованием версии, скажем, 1.x, и я запускал их с Migrate.exe из версии 2.x.

Использование Migrate.exe с той же версией, которая использовалась для создания миграции. DLL решила ее для меня.

+0

Это то, что сработало для меня. Не будучи совместимым с переходом, я могу понять, но не выдавать ошибку, когда она не обновляется, кажется мне недосмотром. –

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

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