連載:ADO.NET Entity Framework入門

第6回 EF4によるN層アーキテクチャと自己追跡エンティティ【前編】

WINGSプロジェクト 土井 毅 著/山田 祥寛 監修
2010/12/03
Page1 Page2 Page3

自己追跡エンティティを使った3層アーキテクチャ・サンプル

 さて、ここからは自己追跡エンティティを使った3層アーキテクチャによるサンプルを構築しながら説明を進めていこう。

 作成するのは図4のような、Silverlightのクライアントと、それが通信するサーバのサンプルである。クライアントは、サーバから読み込んできたエンティティの内容をDataGridコントロールに表示でき、また、編集した修正内容をサーバに送信することができる、というものである。


図4 作成した3層アーキテクチャ・サンプル
[Load]/[Save]ボタンでサーバに対してデータを読み取り/保存が可能

 小さなサンプルではあるが、自己追跡エンティティがN層アーキテクチャにおいて、どのような役割を果たすのかをしっかり理解していきたい。

■各プロジェクトと用いる技術

 今回はプロジェクトを3つに分割しており、各プロジェクトは図5のような関係となっている。


図5 3層アーキテクチャ・サンプルとそれぞれの役割

 クライアント・サイドではSilverlight 4を使用する。Visual Studio 2010は標準ではSilverlight 4に対応していないため、あらかじめ以下のURLより「Microsoft Silverlight 4 Tools for Visual Studio 2010」をダウンロードしてインストールする必要がある。

 なお、このサンプルは必要な手順が多いため、今回は自己追跡エンティティの生成と、生成されたソース・コードの確認までとし、次回でWCFによるサービス公開とクライアントの実装を行うこととする。また、以降の画面はC#環境を前提としているが、Visual Basicの場合もほぼ同様である。

■自己追跡エンティティの作成

 まずは自己追跡エンティティを作成しよう。データアクセスを行うAddressBookDataプロジェクトをクラス・ライブラリとして作成する。


図6 データアクセス用プロジェクトをクラス・ライブラリとして作成

 EDMの定義については、これまでのモデルを流用することにする。[プロジェクト]−[既存項目の追加]から、前回までに作成してきたAddressBook.edmxをプロジェクトに追加する(図7)。


図7 AddressBook.edmxをプロジェクトに追加

 それでは、POCOによるエンティティ・クラスの場合と同様に、EDMから自己追跡エンティティを自動生成しよう。なお、前回とは異なり、自己追跡エンティティは拡張機能ではなく、Visual Studio 2010標準でサポートされている。

 まず、ADO.NET Entity Data Modelツール上で右クリックし、図8のように[コード生成項目の追加]を選択する。


図8 [コード生成項目の追加]を選択

 表示された[新しい項目の追加]ダイアログ(図9)では、EDMからコードを生成する方法を選択できるので、[ADO.NET Self-Tracking Entityジェネレーター]を選択する。


図9 「ADO.NET Self-Tracking Entityジェネレーター」

 「ADO.NET Self-Tracking Entityジェネレーター」では、POCOによるエンティティ・クラスの場合と同様に、T4テンプレートにより、図10のようなファイル群が自動生成される。


図10 生成されたファイル群(C#)
拡張子「.tt」はT4テンプレート・ファイルを示す。

 POCOによるエンティティ・クラスの場合と同様、エンティティ・クラスとオブジェクト・コンテキストが生成される。


 INDEX
  ADO.NET Entity Framework入門
  第6回 EF4によるN層アーキテクチャと自己追跡エンティティ【前編】
    1..NETでの3層アーキテクチャ/変更履歴管理とは/自己追跡エンティティとは
  2.自己追跡エンティティを使った3層アーキテクチャ・サンプル
    3.自己追跡エンティティの実装を確認/【コラム】自己追跡エンティティはPOCO?
 
インデックス・ページヘ  「ADO.NET Entity Framework入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間