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);