4

Entity Framework (5.0.0) データベースのようなデータベース初期化子を使用したり、データベースを作成しDropCreateDatabaseAlwaysたりMigrateDatabaseToLatestVersionすると、 を使用してデータベースを作成する場合とは異なり、移行で定義したインデックスが結果のスキーマに含まれませんUpdate-Database

データベース初期化子を使用して、移行を順番に実行する場合と同じ最終結果を生成するようにシステムを構成するにはどうすればよいですか?

移行の例

public override void Up()
{
    CreateIndex("dbo.Users", "Username", unique:true);
}

結果DropCreateDatabaseAlways(インデックスなし)

CREATE TABLE [dbo].[Users] (
    [Id]       BIGINT         IDENTITY (1, 1) NOT NULL,
    [Username] NVARCHAR (50)  NULL,
    [Email]    NVARCHAR (255) NULL,
    CONSTRAINT [PK_dbo.Users] PRIMARY KEY CLUSTERED ([Id] ASC)
);

からの結果Update-Database(インデックスを含む)

CREATE TABLE [dbo].[Users] (
    [Id]       BIGINT         IDENTITY (1, 1) NOT NULL,
    [Username] NVARCHAR (50)  NULL,
    [Email]    NVARCHAR (255) NULL,
    CONSTRAINT [PK_dbo.Users] PRIMARY KEY CLUSTERED ([Id] ASC)
);

GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Username]
    ON [dbo].[Users]([Username] ASC);
4

1 に答える 1