Entity Framework Feature CTP 1を用いたPOCO Entity作成(セッションフォロー:TechEdT2-405:ADO.NET Entity Framework Part4 & 9/18 TechFildersセミナー )

ちょっと時間が空いてしまい申し訳ありません。

前回のお話通り、ADO.NET Entity FrameworkでPersistence Ignoranceのデモをご紹介してみたいのですが、といいながら、まずは、Entity Framework Feature CTP 1を用いたPOCOでのEntity作成をご紹介します。

■開発環境
以下をインストールします。
VS2010 英語版
https://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=85520793-68fc-4361-a8b6-dc2cff49c8d2
Entity Framework Feature CTP 1
https://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7fd7164e-9e73-43f7-90ab-5b2bf2577ac9

■手順1
ConsoleApplicationを新規作成して、AddNewItemでADO.NET Entity Data Modelを追加します。
今回は、pubsデータベースを使用します。

pubsデータベースはこちらから。
https://msdn2.microsoft.com/ja-jp/library/ms143221.aspx

image

今回はjobsテーブルのみを使用します。

image

■手順2
pubs.edmxのデザイナ上で右クリックしてAdd New Artifact Itemを選択します。

image

EntitFramework POCO Code Generatorを選択します。ファイル名は、ココではpubs.ttとしました。

image

Warningが2回ほど出ますが、気にせずOKを押します。
image

そうすると、下図のようにpubs.Context.ttと、pubs.Types.ttというファイルができます。
同時にpubs.edmxのコードビハインドが削除されます。(プロパティのCustomToolもクリアされます)

image

このpubs.Types.ttがPOCOで作成されたEntityであり、pubs.Context.ttは、消えてしまったContextのプログラムコードに相当します。(なお、この.ttファイルはT4テンプレートファイルといいます。テンプレートの変更は次回ご紹介します。)

一応確認のため、pubs.Types.ttの下にある、jobs.csというファイルを見てみましょう。
コード自体は以下のようになっています。

using System; using System.Collections.Generic;

namespace ConsoleApplication1 {     public partial class jobs     {         #region Primitive Properties         public short job_id { get; set; }         public string job_desc { get; set; }         public byte min_lvl { get; set; }         public byte max_lvl { get; set; }

        #endregion     } }

EntitFramework POCO Code Generatorを使えば、上記のような簡単な手順でPOCOでEntityを構築することが可能です。

 

 

 

 

■手順3
以下をコーディングしてテストする。

static void Main(string[] args) {     using (pubsEntities db = new pubsEntities())     {         var query = from j in db.jobs                          where j.max_lvl > 15                          select j;         foreach (var q in query)         {             Console.WriteLine(q.job_desc);         }     }     Console.ReadLine(); }

これでデータの取得が可能になりました。

さて、こうした手順をベースに次回こそ(すみません・・・)Persistence Ignorance実装をご紹介します。