SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Scott Guthrie氏 Blog翻訳

Entity Framework コードファーストのお知らせ(CTP5リリース版)

連載:ScottGu's Blog翻訳


既存データベースに対する改善されたサポート

 EFコードファーストでは、既存データベースに対応するモデル層を非常に簡単に作成できます。CTP5には、このシナリオに対して、開発者のワークフローがさらに流れるようなような改善が行われています。

 以下は、Northwindサンプルデータベースに対して、モデル層を作成するための、EFコードファーストを使用する手順になります。

ステップ1:モデルクラスとDbContextクラスを作成

 以下は、EFコードファーストを使用して、Northwindデータベースに対して、簡単なモデル層を実装する時に必要なすべてのコードです。

caption

 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オブジェクトを返します。

caption

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

caption

 EFコードファーストが、すべての変更追跡とデータの永続化を処理するので、私たちはデータアクセスに関して心配する必要がなくなり、アプリケーションおよびビジネスロジックに集中できるようになります。

次のページ
ビルトインのモデル検証

この記事は参考になりましたか?

Scott Guthrie氏 Blog翻訳連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト Chica(チカ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Scott Guthrie(Scott Guthrie)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5657 2011/01/24 17:11

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー