LINQが生成するSQLその1

Silverligt ⇒ WCF RIA Services経由でのLINQ呼び出しを調べてみた。
// Silverlight
var query =
    from raceUma in _context.GetV_RACE_UMAQuery()
    where raceUma.DataKubun != Common.DataKubunList.RaceUma.Delete
        && raceUma.KettoNum == this.KettoNum
    select raceUma;
    

// WCF RIA Services
public IQueryable<V_RACE_UMA> GetV_RACE_UMA()
{
    var query = from race in ObjectContext.RACEs
            join race_uma in ObjectContext.RACE_UMA
            on new { race.Year, race.MonthDay, race.JyoCD
              , race.Kaiji, race.Nichiji, race.RaceNum }
            equals new { race_uma.Year, race_uma.MonthDay, race_uma.JyoCD
              , race_uma.Kaiji, race_uma.Nichiji, race_uma.RaceNum }
            select new V_RACE_UMA
            {
                DataKubun = race_uma.DataKubun,
                // 省略
            };

    return query;
}

// 生成されたSQL
SELECT 
1 AS [C1], 
[Extent2].[DataKubun] AS [DataKubun], 
-- 省略
FROM  [dbo].[RACE] AS [Extent1]
INNER JOIN [dbo].[RACE_UMA] AS [Extent2] 
ON ([Extent1].[Year] = [Extent2].[Year]) 
 AND ([Extent1].[MonthDay] = [Extent2].[MonthDay]) 
 AND ([Extent1].[JyoCD] = [Extent2].[JyoCD]) 
 AND ([Extent1].[Kaiji] = [Extent2].[Kaiji]) 
 AND ([Extent1].[Nichiji] = [Extent2].[Nichiji]) 
 AND ([Extent1].[RaceNum] = [Extent2].[RaceNum])
WHERE (N'0' <> [Extent2].[DataKubun]) 
 AND (N'2005105820' = [Extent2].[KettoNum])

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中