Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
ちょっと時間が空いてしまい申し訳ありません。
前回のお話通り、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への要求がエラーとなることを確認しています。