2014-08-27 16 views
8

Ich habe ein Projekt geerbt, das FluentMigrator verwendet, um Migrationen zu verwalten. Ursprünglich führte das Projekt die In-Process-Migrationen durch, als die Anwendung gestartet wurde, aber I.T. Wir haben uns darauf konzentriert und müssen nun einem Datenbankadministrator Skripte für alle Datenbankänderungen bereitstellen.FluentMigrator läuft nicht Migrationen

Als Teil dieser Umstellung habe ich die Migrationen in ein neues Projekt namens Migrationen verschoben. Wenn ich versuche, die Migrationen mit dem Befehlszeilentool auszuführen, scheint es zu funktionieren, aber keine Migrationen werden auf die Datenbank angewendet. Die Datenbankzeichenfolge ist korrekt, da sie nicht erstellt wird, wenn die VersionInfo-Tabelle nicht existiert. enter image description here

Es gibt eine Reihe von Migrationen, aber die meisten von ihnen sind sehr einfach. Hier ist ein Beispiel für die ersten:

enter image description here

Ich bin mit SQL Server 2012 und FluentMigrator 1.2.1. Hier

ist die Befehlszeile im Text für 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 

Und die Probenwanderung:

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

Gibt es frühere Migrationen in der VersionInfo-Tabelle? Erstellen Sie die Migrationsdll als Debug (und nicht freigeben) in Visual Studio? –

+1

Ist dir das jemals auf den Grund gegangen? –

Antwort

5

ich die gleiche Sache immer, und es stellte sich heraus, dass die Anordnung mit Die Migrationen in dieser Version wurden mit der Version 1.x geschrieben und ich habe sie mit der Version Migrate.exe ab Version 2.x ausgeführt.

Mit der Migrate.exe mit der gleichen Version, die zum Erstellen der Migrationen DLL verwendet wurde, löste es für mich.

+0

Das hat bei mir funktioniert. Nicht vorwärtskompatibel zu sein, kann ich verstehen, aber keinen Fehler irgendeiner Art zu erzeugen, wenn es nicht aktualisiert wird, scheint für mich ein Versehen zu sein. –

Verwandte Themen