Welcome to MSDN Blogs Sign in | Join | Help

こだかたろうです

マイクロソフトでデベロッパーエバンジェリストをやっています。 未だ修行中の身であります。

News

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 英語版
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=85520793-68fc-4361-a8b6-dc2cff49c8d2
Entity Framework Feature CTP 1
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=7fd7164e-9e73-43f7-90ab-5b2bf2577ac9

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

pubsデータベースはこちらから。
http://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実装をご紹介します。

Posted: Tuesday, October 06, 2009 6:50 AM by Taro Kodaka

Comments

teruc said:

Postネタと直接関係ないのですが、Entity FrameworkとADO.NET Data Servicesの組み合わせで制限となるデータ型とかあるのでしょうか。

どうもSQL ServerでTime型を使用したモデルを取り込むとADO.NET Data Servicesへの要求がエラーとなることを確認しています。

# October 24, 2009 10:17 AM
Leave a Comment

(required) 

(required) 

(optional)

(required) 

  
Enter Code Here: Required

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Page view tracker