連載:ADO.NET Entity Framework入門第5回 POCOによるエンティティ・クラスWINGSプロジェクト 土井 毅 著/山田 祥寛 監修2010/11/05 |
|
|
POCOによるエンティティ・クラスの作成
それでは、前回までのサンプルを元に、Visual Studio 2010でPOCOによるエンティティ・クラスを作成してみよう。
■Entity Framework依存のエンティティ・クラス定義の削除
まず、本連載でこれまでに使用してきたEDM(エンティティ・データ・モデル)であるAddressBook.edmxファイルから、自動生成されたエンティティ・クラスを削除しよう。
AddressBook.edmxをVisual Studioのコード・エディタで開き、図2のように[プロパティ]ウィンドウで[コード生成方法]を「既定」から「なし」に変更する。これにより、EDMから自動生成された、Entity Framework依存のエンティティ・クラス定義は削除される。
図2 EDMの[プロパティ]ウィンドウ |
[コード生成方法]を「既定」から「なし」に変更する。 |
■POCO Entity Generatorによるエンティティ・クラスの生成
次に、POCOによるエンティティ・クラスを実装しよう。
Visual Studio 2010は標準ではPOCOによるエンティティ・クラスの自動生成機能を持っていないが、Visual Studio 2010用の拡張機能として公開されている「ADO.NET C# POCO Entity Generator」または「ADO.NET VB POCO Entity Generator」(以下、POCO Entity Generator)をインストールすることで、EDMからPOCOによるエンティティ・クラスを自動生成できる。もちろん手動でエンティティ・クラスを実装することも可能であるが、省力化のためEDMからの自動生成を推奨しておく。
まず、ADO.NET Entity Data Modelツール上で右クリックし、図3のように[コード生成項目の追加]を選択する。
図3 [コード生成項目の追加]を選択 |
ADO.NET Entity Data Modelツール上で右クリックすると表示されるメニュー。 |
表示された[新しい項目の追加]ダイアログ(図4)では、EDMからコードを生成する方法を選択できる。今回は左側の[オンライン テンプレート]をクリックし、使用する言語に合わせて「ADO.NET C# POCO Entity Generator」または「ADO.NET VB POCO Entity Generator」の項目をダブルクリックしてインストールする。なお、C#、VBで別々の拡張機能となっているが、機能などはほぼ同等であるため、以降のキャプチャ画面はC#版のみを掲載する。
図4 拡張機能のインストール(C#版) |
使用する言語に合わせて「ADO.NET C# POCO Entity Generator」または「ADO.NET VB POCO Entity Generator」をインストールする。 |
ちなみに、執筆時点では[オンライン テンプレート]をクリックすると、ランク順で最上位に表示されていたが、個別に探す場合には、左側の[テンプレート]−[データベース]を選択することで、目的の拡張機能にたどり着けるだろう。
インストール中に図5のような確認画面が表示される場合には、[インストール]ボタンをクリックして進んでいこう。
図6 拡張機能のインストールの際に表示される確認画面(C#版) |
■生成されたPOCOによるエンティティ・クラスの確認
インストール完了後、ダイアログの[追加]ボタンでPOCOによるエンティティ・クラスを生成することができる。
ソリューション・エクスプローラを確認すると、図7のように「Model1.context.tt」と「Model1.tt」というファイルの下に、エンティティ・クラスおよびオブジェクト・コンテキストが生成されているのが分かる。
図7 生成されたエンティティ・クラス(左:C#、右:VB) |
【コラム】T4テンプレート 図7を見ると分かるとおり、POCO Entity GeneratorによるEDMからのコード生成の際に、エンティティ・クラスだけでなく、Model1.ttなどの「.tt」拡張子を持ったファイルが生成されている。これらはT4(Text Template Transformation Toolkit)と呼ばれる、Visual Studioの持つテンプレート機能を用いたテンプレート定義ファイルである。 それぞれのファイルには、C#、VBのコードを生成するためのテンプレートが記述されており、それに沿ってEDMからのコード生成が行われている。 T4の詳細については、MSDNなどの情報源を参考にしてほしい。 |
例えばエンティティ・クラスの定義であるEntry.cs/Entry.vbファイルの内容(リスト2に抜粋)を見れば、Entity Frameworkのクラスに関連するコードが存在しない、POCOであることが確認できる。
| ||
リスト2 POCOによるエンティティ・クラスの定義内容(上:Entry.cs、下:Entry.vb) |
INDEX | ||
ADO.NET Entity Framework入門 | ||
第5回 POCOによるエンティティ・クラス | ||
1.POCOと永続性非依存(Persistence Ignorance)原則 | ||
2.POCOによるエンティティ・クラスの作成/【コラム】T4テンプレート | ||
3.生成されたオブジェクト・コンテキスト・クラスの確認/【コラム】コード・ファースト | ||
「ADO.NET Entity Framework入門」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|