2012-04-21 13 views
1

私は自分のプロジェクトをデータベースからコードを先に移行しています。EF CodeFirst - データベース作成後にインデックスを作成する

Entity Frameworkは、新しいデータベース(古いものを模倣する必要があります)を作成するのに便利です。
私はテーブルを記述するためにデータアノテーションと流暢なAPIの組み合わせを使用しています。

私のデータベースにはいくつかのインデックスがあり、Entity Frameworkでもインデックスを作成したいと思います。これを行う古い方法は、独自のInitializerを定義し、カスタムT-SQLを使用することです。

しかし、EF移行が完了したので、これを行うのが簡単になります。
CreateDatabaseIfNotExists <を自動移行と組み合わせてインデックスを作成する方法を理解できないようです。私はMigrateDatabaseToLatestVersion <を使用しようとしましたが、データベースの作成後に移行を実行していないようです。

エンティティフレームワーク4.3を使用できるようになった今、データベース作成時にインデックスと制約を作成する適切な方法は何ですか?

+0

「データベースの作成後」および「CreateDatabaseIfNotExists」と言っているのは、既存のデータベースでこれを行うという意味ですか? – dknaack

+0

申し訳ありませんが、Entity Frameworkでデータベースが作成された後です。だから私はデータベースなしで始め、EFで基本的な構造を作ってから、インデックスを欲しい。 – Zyphrax

+0

私はefがインデックスを作成することに気づいていません。自分でコマンドを発行する方法を提供するだけです。 –

答えて

5

移行を使用する場合は、CreateDatabaseIfNotExistsを使用しないでください。最初からMigrateDatabaseToLatestVersionを使用してください - データベースも作成されます。移行クラスのUpメソッドにインデックス作成コード(CreateIndexへの呼び出し)を挿入します。

既に既存のデータベースがあり、移行を使用する場合は、最初にcreate initial migrationにする必要があります。

関連する問題