2014-08-27 85 views
8

我已經繼承了一個使用FluentMigrator管理遷移的項目。最初,該項目在應用程序啓動時正在執行正在進行的遷移,但I.T.已經打擊了這一點,我們現在必須爲DBA提供所有數據庫更改的腳本。FluentMigrator未運行遷移

作爲此過渡的一部分,我已將遷移遷移到名爲Migrations的新項目。當我嘗試使用命令行工具執行遷移時,它似乎可以正常工作,但不會將遷移應用於數據庫。數據庫字符串是正確的,因爲如果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表中是否存在以前的遷移?您是否將Visual Studio中的migrations dll構建爲調試(而不是發佈)? – 2014-09-03 07:17:32

+1

你有沒有深入到底? – 2015-04-02 15:23:09

回答

5

我得到了同樣的事情,它竟然是認爲大會其中的遷移是使用版本編寫的,比如說1.x,並且我使用版本2.x中的Migrate.exe運行它們。

使用與用於構建遷移DLL的版本相同的Migrate.exe爲我解決了這個問題。

+0

這是我的工作。不能向前兼容,我可以理解,但不會產生某種錯誤,當它無法更新時似乎是對我的疏忽。 – 2015-07-22 23:29:04