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
今回はjobsテーブルのみを使用します。
■手順2
pubs.edmxのデザイナ上で右クリックしてAdd New Artifact Itemを選択します。
EntitFramework POCO Code Generatorを選択します。ファイル名は、ココではpubs.ttとしました。
そうすると、下図のようにpubs.Context.ttと、pubs.Types.ttというファイルができます。
同時にpubs.edmxのコードビハインドが削除されます。(プロパティのCustomToolもクリアされます)
この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実装をご紹介します。
Comments
- Anonymous
October 24, 2009
Postネタと直接関係ないのですが、Entity FrameworkとADO.NET Data Servicesの組み合わせで制限となるデータ型とかあるのでしょうか。 どうもSQL ServerでTime型を使用したモデルを取り込むとADO.NET Data Servicesへの要求がエラーとなることを確認しています。