既存データベースに対する改善されたサポート
EFコードファーストでは、既存データベースに対応するモデル層を非常に簡単に作成できます。CTP5には、このシナリオに対して、開発者のワークフローがさらに流れるようなような改善が行われています。
以下は、Northwindサンプルデータベースに対して、モデル層を作成するための、EFコードファーストを使用する手順になります。
ステップ1:モデルクラスとDbContextクラスを作成
以下は、EFコードファーストを使用して、Northwindデータベースに対して、簡単なモデル層を実装する時に必要なすべてのコードです。

EFコードファーストでは、データベースのエンティティを表示するために『POCO(Plain Old CLR Objects)』が使用できます。つまり、ベースクラスからのモデルクラスを継承したり、またその上でインターフェイスやデータ永続属性の実装を行う必要がないということです。これにより、モデルクラスをクリーンに保つことができ、簡単にテストができ、『永続性非依存(Persistence Ignorance)』にできます。上記のProductおよびCategoryクラスは、POCOモデルクラスの例です。
EFコードファーストでは、データベースのテーブルにマップされたPublicプロパティを公開する、『DbContext』クラスを作成することで、POCOモデルクラスをデータベースに簡単に接続できます。上記のNorthwindクラスは、これを行う方法を紹介しています。これは、ProductおよびCategoryクラスをデータベースの『Products』および『Categories』テーブルにマッピングしています。そして、ProductおよびCategoryクラスのプロパティは、ProductsおよびCategoriesのカラムにマップしていて、Product/Categoryオブジェクトの各インスタンスは、テーブル内の行にマップしています。
上記のコードは、モデルおよびデータアクセス層を作成するために必要なすべてのコードになります。
EFコードファーストの以前のCTPでは、既存データベースとの作業にはさらに手順(Database.Initializer(null)を呼び出して、EFコードファーストがデータベースを作成しないようにする)が必要でしたが、CTP5リリースではもう必要ありません。
ステップ2:データベース接続文字列の構成
モデル層を定義するために必要なすべてのコードが書けました。最後の手順は、データベースを接続するための接続文字列をセットアップすることです。これを行うために、web.configファイル(またはクライアント・アプリケーションのApp.Config)に、『Northwind』の接続文字列を、以下のように追加します。
<connectionStrings>
<add name="Northwind"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|orthwind.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
EF『コードファースト』は、デフォルトでDbContextクラスがコンテキストクラスと同じ名前を持つ、接続文字列を探す規約を使用します。DbContextクラスが『Northwind』と呼ばれているので、デフォルトで『Northwind』接続文字列を探します。上記のNorthwind接続文字列は、ローカルのSQL Expressデータベース(プロジェクトの\App_Dataディレクトリに保存されている)を使用するように構成されています。
これを、リモートのSQL Serverをポイントするように変更することもできます。
ステップ3:Northwindモデル層を使用
これで、今EFコードファーストでビルドした強く型付けされたモデル層を使用して、データベースを簡単にクエリおよび更新できるようになりました。
以下のコード例は、特定の製品カテゴリにある製品をクエリするために、LINQを使用する方法を示しています。このクエリは、検索条件にマッチした、一連の強く型付けされたProductオブジェクトを返します。

以下のコード例は、特定のProductオブジェクトを取得して、2つのプロパティを更新し、変更をデータベースに保存する方法を示しています。

EFコードファーストが、すべての変更追跡とデータの永続化を処理するので、私たちはデータアクセスに関して心配する必要がなくなり、アプリケーションおよびビジネスロジックに集中できるようになります。
この記事は参考になりましたか?
- この記事の著者
-
WINGSプロジェクト Chica(チカ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
この記事は参考になりましたか?
この記事をシェア
