インクリメンタルなカイハツにっき

.NET 開発手法を中心に、これから始める方の一助となる記事を載せていく予定です。

実践 Entity Framework ~ マイグレーションとコマンド

前回 DbContext クラスから継承した Context クラスを作成しました。今回は、前回少し説明したマイグレーションを利用して、実際のデータベースを作成してみます。

Enable-Migrations

まずは、プロジェクト内でマイグレーションが利用できるように有効化する必要があります。
Configuration ファイルを用意して・・・とか色々ありますが、わざわざ用意する必要はありません。コマンド一発で可能です。
そのコマンド入力は、NuGet で利用した、パッケージマネージャーコンソールを使用し、次のコマンドを入力します。

Enable-Migrations

例のごとく、enable-m あたりで「Tabキー」を押すと、自動補完されるはずです。しばらく待つと・・・

f:id:increment-i:20150520012250j:plain
「有効になりました」のメッセージとともに、ひとつのファイルとフォルダが作成されます。
この新たに作成された、「Migrations」フォルダ内の「Configuration.cs」(C#の場合)ファイルが、マイグレーションの設定ファイルになります。
ここで色々と設定できますが、とりあえず気にせず次に行きましょう。

Add-Migragion

マイグレーションが有効になったので、今度は現在の内容をデータベースに反映させてみましょう。現在の内容といっても何も作成していないので、単純にデータベースが作成されるだけですが・・・
まずは、変更点をデータベースに反映させるためのコードを記述する必要がありますが・・・当然ながら、そんな事を手でやっていたら、マイグレーションの意味がありません。ちゃんと便利なコマンドが用意されています。

Add-Migration 名称

「名称」の部分に識別するための名称を設定する必要があります。この名称を指定して、その状態まで戻すといったことも可能なので、なるべくわかりやすい名称にしたほうが良いかと。
今回は最初ということで、「Initial」とでもしておきます。

Add-Migration Initial

f:id:increment-i:20150520012300j:plain
「スキャフォールディング」という、一般生活上では聞きなれない言葉がつらつら出てきますが・・・

スキャフォールディング(scaffolding)、足場という意味らしいですが、データベースへ反映させるための骨組みを作っている的な感じでしょうか。

成功すると、「時間_指定した名称」ファイルが作成されます。中身は、Up メソッドと、Down メソッドがあるだけですね。モデルの指定が何もないので当然ですが・・・足場はできたので、とりあえず次に行きましょう。

Update-Database

さて、反映させてみます。これもコマンド一発で。

Update-Database

うまくいったみたいな感じのメッセージが。一切何も設定してませんが一体どこにできたのでしょうか?
今回使用しているマシンは(仮想環境ですが)Windows 8.1クリーンインストール後、Visual Studio Community 2013 をフルインストールしただけです。別途 SQL Server 等はインストールしておりませんが・・・

答えはここです。

f:id:increment-i:20150520012309j:plain

(localdb)\MSSQLLocalDB とはなんぞや?
・・・Visual Studio に付属している、SQL Server Express LocalDB です。

この長ったらしいデータベース名は?
・・・Context クラスのフルネーム(名前空間付)がデータベース名になります。

なんで?
・・・そういうルールなんで・・・(Web.config にヒントがありますが)

とにかく本当にデータベースが作成されました。
これでOK・・・なわけないって?

とりあえず、基本的な3つのコマンドの利用方法を見てきました。
次回以降、ここに色々と付け加えて、目指すものを作成してみましょう。

つづきはこちら