【ADO.NET Entity Framework】LINQ to Entityの使用

こんにちは、こだかです。

前回に引き続きまして、EntityDataModel(EDM)に対するクエリーをご紹介します。

1.EntityClientを直接扱う方法
 ・・・EntitySQL
2.ObjectQueryから問い合わせをかける方法
 ・・・EntitySQL
 ・・・Query builder メソッド

 ・・・Linq to Entity
今回は2のObjectService(ObjectQuery)をLINQからクエリーしてみます。

LINQは様々なデータソースを扱うことができる言語埋め込み型のクエリーですが、他のソース(Object,XML等)と同じようにEntityモデル自体を扱うことが可能です。
ObjectService経由で使用するのですが、型に注意して下さい。前回の例ではObjectQuery<T>型になりましたが、LINQを使用した場合、IQueryable<T>型になります。(もしくはLINQ to Object等で使用するIEnumerable <T>)
当然ながらObjectQuery<T>型のメンバを使用したい場合などは、キャストする必要があります。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.EntityClient;
using pubsModel;
using System.Data.Objects;

namespace EF1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (pubsEntities pubsContext = new pubsEntities())
            {
                var emps = from x in pubsContext.employee
                             where x.fname == "Maria"
                             orderby x.lname
                             select x;

                foreach (employee emp in emps)
                {
                    Console.WriteLine("[ObjectService] employeeName :{0} - {1}",
                                        emp.fname, emp.lname);
                }
                pubsContext.Connection.Close();
            }

        }
    }
}

 

こだかたろう