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

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

実践 Entity Framework ~ コードファースト、マイグレーション、コンテキスト

前回、Entity Framework のインストールまで完了しました。

Code First

Entity Framework の重要なキーワードのひとつとして、Code First があります。
コードファースト・・・その名の通り、コードでテーブル構造等を定義し、それに従い実際のテーブル等が自動で作成されます。
せっかく Entity Framework を導入するのであれば、是非とも利用したい手法といえます。以降、Code First ありきで話を進めます。(以降、カタカナ表記で『コードファースト』と表記します。)

Migration

同じく、重要なキーワードとして、Migration があります。
マイグレーション・・・直訳すると移住、移行などみたいです。
Code First と対で、MSDN では、Code First Migrations などと紹介されてたりします。
開発中にデータ構造が変更になる・・・無いほうが幸せな話ですが、実際問題あるほうが普通なのではないでしょうか。そのような場合であっても、コードを変更するだけで、自動または手動で、実データベース構造を変更してしまう・・・移行ですね。そんな機能です。
コードファーストで開発を行うのであれば、理解しておく必要があるかと思います。
(以降、カタカナ表記で『マイグレーション』と表記します。

コードファーストやマイグレーションには、色々と機能等があり、すべてを理解するのは大変です。最初のうちはあまり深く考えずに、「こうやったらこうなる」を理解したほうが良いかと思います。

モデルは・・・

通常の解説では、まずテーブルとなるモデルを作成するのですが・・・ちょっと後回しにしちゃいます。

DbContext クラス

というわけで、まずは Context クラスを作成します。
Context ・・・ 日本語に直訳すると「文脈」という意味らしいですが、それだと何だかよくわからないですね・・・
MSDNでは、DbContext に関して、次のようか解説がありました。

DbContext インスタンスは、データベースに照会してすべての変更をグループ化し、1 つの単位としてストアに書き戻すことができるような、作業単位パターンとリポジトリ パターンの組み合わせを表します。

解ったようなわからんような・・・まぁあまり難しく考えずに
データベースへの処理時は、Context を介する
とりあえず、そう覚えておきましょう。

Entity Framework では、System.Data.Entity 名前空間に DbContext クラスが用意されています。
通常は、この DbContext クラスを継承して、利用するデータベースに合わせて実装します。

住所情報を管理するデータベースということで、名称は AddressDataContext としてみます。

public class AddressDataContext : System.Data.Entity.DbContext
{
}

まだ中身はありませんが・・・

ちなみにファイルの場所はどこでも構わないです。(何処でもよいわけではないですが・・・)今回は Model フォルダ内に作成してみました。

f:id:increment-i:20150518182200p:plain

さて、データベースを作成する準備は整いました。
・・・?何も作ってないけど?
ここからマイグレーションの機能を利用すれば、実データベースが作成可能です。
(まだテーブルはできませんが)

次回では、そのマイグレーションを利用してみます。

続きはこちら