ååã®ãããã
ãååã®è¨äºã§ã¯ããã¼ã¿ãã¼ã¹ã«å¯¾ãã¦LINQã¡ã½ããå¼ã使ã£ã¦ã¯ã¨ãªãå®è¡ããæ¹æ³ã«ã¤ãã¦è§£èª¬ãã¾ããã夿°ã®æ¡ä»¶ãæå®ãããå ´åã§ããã¡ã½ãããã§ã¼ã³å¼ã«ã¡ã½ãããç©ã¿éãããã¨ã§ç°¡åã«å®è£ ã§ãããã¨ã確èªã§ãã¾ããã
ãä»åã¯ãLINQãå®éã«ã¯ã©ããªSQLã«å¤æããã¦ããã®ãã確èªãã¾ããã¾ããé å»¶ãã¼ãã£ã³ã°ã®æç¡ã«ãã£ã¦ã©ã®ããã«å¦çãå¤ããããæèããããã©ã¼ãã³ã¹åé¡ã解決ããæ¹æ³ã«ã¤ãã¦è§£èª¬ãã¾ãããªããåå使ãããµã³ãã«ãä»åãå¼ãç¶ã使ç¨ãã¾ãã
åºåãããSQLã確èªãã¦ã¿ãã
ãååã®è§£èª¬éããEntity Frameworkã¯ãLINQã®ã¯ã¨ãªå¼ãã¡ã½ããå¼ããæçµçã«SQLã¸ã¨å¤æãã¦ãã¼ã¿ãã¼ã¹ä¸ã§å®è¡ãã¦ãã¾ãããã®å¤æã¯ééçã«è¡ããããããããã°ã©ãã¯LINQãè¨è¿°ããéã«SQLãããã»ã©æèããå¿ è¦ãããã¾ããããããããã¼ã¿ãã¼ã¹ããã°ã©ãã³ã°ãè¡ã£ã¦ãã以ä¸ãå®éã«ã©ããªSQLãå®è¡ããã¦ããããçè§£ããã®ã¯éè¦ã§ããèªåãæ¸ããLINQãã©ã®ãããªSQLã¨ãã¦å®è¡ãããããçè§£ã§ãã¦ããªãã¨ãå¾ã»ã©è§£èª¬ãããããªããã©ã¼ãã³ã¹ä¸ã®åé¡ã«ã¶ã¤ãããã¨ã«ãªãã¾ãããã¼ã¿ãã¼ã¹ããã°ã©ãã³ã°ã«ããã¦ã¯ããã ã¯ã¨ãªçµæãæ£ãããã°ãããã ãã§ãªãããã¼ã¿ãã¼ã¹ã«ä¸è¦ãªè² è·ãæããªãããã«ã¯ã¨ãªãæãããã®ãéè¦ã§ãã
ãEntity Frameworkããå®éã«åºåãããSQLã確èªããã«ã¯ããªã¹ã1ã®â ã®ããã«ãã³ã³ããã¹ãã¯ã©ã¹ã®Databaseããããã£ã§åå¾ã§ããSystem.Data.Entity.Databaseãªãã¸ã§ã¯ãã®Logããããã£ã«ããã°ãåºåããããã®ã¡ã½ãããæå®ãã¾ãããªãããã®æ©è½ã¯Entity Framework 6ãã追å ããããã®ã§ããããã ãã§ãEntity FrameworkããSQLãå®è¡ããéãSQLã®å 容ããã©ã¡ã¼ã¿ãå®è¡æéãªã©ãæå®ããã¡ã½ããã®å¼æ°ã¨ãã¦æ¸¡ããã¾ãã
using (var context = new CodeZineSampleContext())
{
//â ã³ã³ããã¹ãã¯ã©ã¹ã®Database.Logããããã£ã使ã£ã¦
//å®éã«çºè¡ãããSQLãã³ã³ã½ã¼ã«ã«åºåãã
context.Database.Log = Console.WriteLine;
//â¡å
¨ä»¶åºåãã¦ã¿ã
IQueryable<Product> products = context.Products;
//â¢çµæãã«ã¼ããã¦åºåãã
foreach (var product in products)
{
//åååã ãåºå
Console.WriteLine(product.Name);
}
}
ãåºåçµæã¯ãªã¹ã2ã®ããã«ãªãã¾ãã
2014/10/26 0:33:35 +09:00
ã§æ¥ç¶ãéãã¾ãã
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Name] AS [Name],
[Extent1].[Price] AS [Price],
[Extent1].[Employee_Id] AS [Employee_Id],
[Extent1].[Maker_Id] AS [Maker_Id]
FROM [dbo].[Products] AS [Extent1]
-- 2014/10/26 0:33:35 +09:00
ã§å®è¡ãã¦ãã¾ã
-- 6 ããªç§ã§å®äºãã¾ãããçµæ: SqlDataReader
ãå®éã«ã¯ãä¸è¨ã®SQLProductsãã¼ãã«ã¸ã¢ã¯ã»ã¹ããåã«ã[INFORMATION_SCHEMA.TABLES]ã[__MigrationHistory]ãã¼ãã«ã«ã¢ã¯ã»ã¹ããSQLãçºè¡ããã¾ããããã¯Entity Frameworkãã½ã¼ã¹ã³ã¼ãã®ã¨ã³ãã£ãã£ã¨ãã¼ã¿ãã¼ã¹ã®ãã¼ãã«å®ç¾©ã®åæãåãããã«ããã¼ã¿ãã¼ã¹ååã¢ã¯ã»ã¹æã«èªåçã«çºè¡ããããã®ã§ãLINQã¨ã¯ç¡é¢ä¿ã§ãã
ãSQLã®å 容ã¨ãã¦ã¯ãProductsãã¼ãã«ã®ãã¹ã¦ã®ãã£ã¼ã«ããSELECTããã ãã®ã·ã³ãã«ãªãã®ã§ããç¹ã«æ¡ä»¶ãæå®ããªãå ¨ä»¶åºåã§ãã®ã§ãæ³å®éãã®SQLã¨è¨ã£ã¦ããã§ãããã
ããã¦ããã°ãåºåãããã¿ã¤ãã³ã°ã«ã注ç®ãã¾ãããããã¬ã¼ã¯ãã¤ã³ããâ¡ã®ç®æã«ä»æãã¦ãããã°å®è¡ããä¸è¡ãã¤ã¹ãããå®è¡ãã¦ã¿ã¦ãã ãããâ¡ã®å ¨ä»¶åºåã®æç¹ã§ã¯SQLã¯çºè¡ããããâ¢ã®foreachæãå®è¡ããã¿ã¤ãã³ã°ã§ãã°ãåºåããããã¨ã確èªã§ããã§ããããååã解説ãã¾ããããEntity Frameworkã¯ãå®éã«ãã¼ã¿ã使ãã¿ã¤ãã³ã°ã«ãªã£ã¦åãã¦SQLã®çºè¡ãè¡ãã¾ãã
Whereã¡ã½ããã§æ¡ä»¶ãæå®ããå ´åã®SQL
ãç¶ãã¦ãLINQã®Whereã¡ã½ããã使ã£ã¦æ¡ä»¶ãæå®ããå ´åã®SQLã確èªãã¦ã¿ã¾ãããï¼ãªã¹ã3ï¼ã
//Priceã300ãè¶
ãããã®ã ãåºåãã
IQueryable<Product> products = context.Products.Where(x => x.Price > 300);
â
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Name] AS [Name],
[Extent1].[Price] AS [Price],
[Extent1].[Employee_Id] AS [Employee_Id],
[Extent1].[Maker_Id] AS [Maker_Id]
FROM [dbo].[Products] AS [Extent1]
WHERE [Extent1].[Price] > 300
ããx => x.Price > 300ãã¨ããã©ã ãå¼ã¯ãWHERE [Extent1].[Price] > 300ãã¨ããSQLã«å¤æããã¦ãã¾ãããã¡ããæ¦ãæ³å®éãã§ããã
