2

Fluent Migrator を使用して一意の列を作成しようとしています。ただし、次のように、一意の制約を列定義と一緒に定義しようとすると機能しません。

[Migration(20120404190455)]
public class Migration1 : Migration
{
    public override void Up()
    {
        Create.Table("Test")
            .WithColumn("Name").AsString(64).Unique();
    }

    public override void Down()
    {
        Delete.Table("Test");
    }
}

次のように移行を実行します。

<sourcedir>\packages\FluentMigrator.Tools.1.0.1.0\tools\AnyCPU\40\Migrate.exe -a build\TheMigrationDLL.dll --db sqlserver2008 -conn "DQLEXPRESS;Initial Catalog=DBNAME;Trusted_Connection=True;" --verbose=true

出力:

connection is null!
connection is null!
Using Database sqlserver2008 and Connection String Data Source=.\SQLEXPRESS;Initial Catalog=DBNAME;Trusted_Connection=True;
-- VersionMigration: migrating ===============================================

-- CreateTable VersionInfo
CREATE TABLE [dbo].[VersionInfo] ([Version] BIGINT NOT NULL)
-- -> 0,0170009s

-- VersionMigration: migrated
-- -> 0,0190011s

-- Migration1: migrating =====================================================

-- CreateTable Test
CREATE TABLE [dbo].[Test] ([Name] NVARCHAR(64) NOT NULL)
-- -> 0,0020002s

-- Migration1: migrated
-- -> 0,0030002s

INSERT INTO [dbo].[VersionInfo] ([Version]) VALUES (20120404190455)
-- Committing Transaction

明らかに、一意のインデックスは作成されません。ただし、スタンドアロン コールでインデックスを作成すると、次のようになります。

Create.Index().OnTable("Test")
    .OnColumn("Name").Ascending()
    .WithOptions().Unique();

出力:

....
-- CreateIndex Test (Name)
CREATE UNIQUE INDEX [IX_Test_Name] ON [dbo].[Test] ([Name] ASC)
....

これに関して github でいくつかの問題を見つけました (例: #49#83 ) が、このプルを参照してクローズされました。

間違ったバージョンを使用しているのだろうか。NuGet から入手できるバージョン 1.0.1.0 を使用しています。

ここで私が間違っていることについてのヒントをいただければ幸いです。前もって感謝します!

よろしく、 アンドレ

4

1 に答える 1

2

FluentMigrator 1.0.2.0 はこの特定の問題を解決します。パッケージを更新してください。

FluentMigrator 1.0.1.0 は 2011 年 9 月にリリースされました。昨日の時点で、リリースに向けて順調に進んでいます。

fluentmigrator.tools パッケージを取得するための .NET 4 移行アセンブリもある場合は、Migrate.exe バージョンの正しいバージョンがあることを覚えておいてください。

于 2012-04-26T07:40:09.280 に答える