我已經繼承了一個使用FluentMigrator管理遷移的項目。最初,該項目在應用程序啓動時正在執行正在進行的遷移,但I.T.已經打擊了這一點,我們現在必須爲DBA提供所有數據庫更改的腳本。FluentMigrator未運行遷移
作爲此過渡的一部分,我已將遷移遷移到名爲Migrations的新項目。當我嘗試使用命令行工具執行遷移時,它似乎可以正常工作,但不會將遷移應用於數據庫。數據庫字符串是正確的,因爲如果VersionInfo表不存在,它將被創建。
有一些遷移,但其中大部分都非常簡單。這是第一個示例:
我使用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");
}
}
}
VersionInfo表中是否存在以前的遷移?您是否將Visual Studio中的migrations dll構建爲調試(而不是發佈)? – 2014-09-03 07:17:32
你有沒有深入到底? – 2015-04-02 15:23:09