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 を使用しています。
ここで私が間違っていることについてのヒントをいただければ幸いです。前もって感謝します!
よろしく、 アンドレ