既存データベースに対する改善されたサポート
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コードファーストが、すべての変更追跡とデータの永続化を処理するので、私たちはデータアクセスに関して心配する必要がなくなり、アプリケーションおよびビジネスロジックに集中できるようになります。
