2012-07-30 2 views
3

나는 그물에 대한 연구를 해왔으며 대부분의 결과가 SQL에서 Linq로 변환되고 거의 linq에서 SQL로 변환되지 않습니다. 당신은 LinqPad에 LINQ 문을 실행하려고 할 수Linq에서 SQL로 변환

using (CommerceEntities db = new CommerceEntities()) 
    { 
    try 
     { 
     var query = (from ProductOrders in db.OrderDetails 
         join SelectedProducts in db.Products on ProductOrders.ProductID 
         equals SelectedProducts.ProductID 
         group ProductOrders by new 
          { 
          ProductId = SelectedProducts.ProductID, 
          ModelName = SelectedProducts.ModelName 
          } into grp 
         select new 
          { 
          ModelName = grp.Key.ModelName, 
          ProductId = grp.Key.ProductId, 
          Quantity = grp.Sum(o => o.Quantity) 
          } into orderdgrp where orderdgrp.Quantity > 0 
         orderby orderdgrp.Quantity descending select orderdgrp).Take(5); 

        RepeaterItemsList.DataSource = query; 
        RepeaterItemsList.DataBind(); 
     } 
    catch (Exception exp) 
     { 
     throw new Exception("ERROR: Unable to Load Popular Items - " + 
          exp.Message.ToString(), exp); 
     } 
    } 
+0

당신은 항상 실제 쿼리를보고 프로파일을 사용할 수 있습니다 생산, 또는 일부 형태의 로깅 플러그. –

+0

안녕하세요, 저는 Microsoft Visual Studio 내에서 SQL Server를 사용하고 있습니다. – user1529419

+1

Linqpad를 사용해 보시지 않겠습니까? 그것은 여러분이 일을 이해하는 데 도움이 될 것이고 생성 된 SQL도 볼 수 있습니다. –

답변

2

:

내가 SQL로 변환 할 코드입니다. LinqPad 사용 방법에 대한 예제는 check the answer here입니다.

생성 된 SQL 문을 보여주는 탭이 있습니다.

+0

LinqPad를 다운로드 받았지만 사용 방법은 무엇입니까? – user1529419

1

Here's an article on logging in LINQ to SQL. 쿼리를 보낼 TextWriter를 지정할 수 있습니다. db는 데이터 컨텍스트입니다 ...

db.Log = new System.IO.StreamWriter("linq-to-sql.log") { AutoFlush = true }; 

:

기본적으로, 당신은 다음처럼 작성할 수 있습니다.

SQL (생성 된 코드는 많이 다를지라도이 자동으로 생성하기 때문에,)이 같은 것을 써서에서

:

SELECT TOP 5 Products.ModelName, Products.ProductID, SUM(OrderDetails.Quantity) qty 
FROM OrderDetails 
INNER JOIN Products ON OrderDetails.ProductID = Products.ProductID 
GROUP BY Products.ProductID, Products.ModelName 
HAVING qty > 0 
ORDER BY qty DESC 
관련 문제