SHOEISHA iD

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

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

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

Scott Guthrie氏 Blog翻訳

ASP.NET MVC 3 Tools UpdateによるEF コードファーストとデータスキャフォールディング

連載:ScottGu's Blog翻訳

ステップ 2:モデルクラスの実装

 最初のステップで2つのクラス、ProductおよびCategoryを作成します。これらは、アプリケーションの『モデル』を定義するために使用します。以下のコードを使用して、プロジェクトの『Models』フォルダに、標準の『plain old C# objects』として実装します。

 上記2つのクラスが、.NETデータ型の標準クラスであることが分かります。これらは、ベースクラスからの継承やインターフェイスの実装は必要ありません。

 標準のスカラプロパティに加え、各クラスには、『association』プロパティがあります。例えば、『Product』クラスには、『Category』プロパティがあり、開発者は属しているCategoryにアクセスできます。同じく『Category』クラスには、『Products』プロパティがあり、開発者は、あるCategory内にあるProductsを取得できます。EF コードファーストでは、これらの関係を自動的に管理し(主キー/外部キーの値を使用して)、オンデマンドで適切なデータを遅延ロードできます。

ステップ 3:EF コードファーストを使用してStoreContext クラスを実装

 2つのモデルクラスが定義できました。次にEFコードファーストを使用して、データベースのテーブルとそのモデルクラスをマッピングする『DbContext』クラスを実装します。これは、以下のコードを使用して、実装します。

 上記の『StoreContext』クラスは、DbContextクラスで、データベースとProductおよびCategoryクラス間をマッピングするのに使用します。これは、EF コードファーストが提供するDbContextベースクラスを継承しており、データベースのテーブルに対応している2つのプロパティを公開します。

 このサンプルでは、デフォルトの『設定に勝る規約』に基づくマッピングルールを使用して、クラスとデータベース間のマッピング方法を定義します。つまり、Productsプロパティは、Productsテーブルにマッピングされ、Categoriesプロパティは、Categoriesテーブルにマッピングされます。今後のブログで、オプションでこれをオーバーライドする方法や独自のマッピングを調整する方法についてお話しします。

 上記のクラスは、ソリューションのどこにでも追加できます。例えば、プロジェクトの『Models』フォルダ内へ追加したり、もしデータコードを別にしておきたい場合は、異なるクラスライブラリプロジェクト内へ追加することもできます。クラスファイルの上部で、DbContextおよびDbSet<T>クラスを参照するために、『using』ステートメントを使ってSystem.Data.Entity名前空間を追加します。

次のページ
ステップ 4:Categoriesコントローラのスキャフォールド

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

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/5926 2011/05/19 14:00

イベント

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

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

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

メールバックナンバー