在哪里可以找到已翻译的Linq to Entity查询到Sql

时间:2015-12-18 11:07:24

标签: c# sql-server entity-framework linq asp.net-web-api

我希望以编程方式获取已翻译的Linq查询,并使用该Sql语法执行一些操作。

假设这是我的代码:

public class MyApiController:ApiController
{
   public IQueryable<object> Get()
   {
      var objs=Context.Objexts.Where(m=>m.Id>10);
      return objs;
   }
}

我想找到并获得如下的Sql语法:

SELECT * FROM dbo.Objexts where Id > 10

3 个答案:

答案 0 :(得分:8)

您可以在ToString()上调用objs方法。这将导致调用返回已执行SQL的ToTraceString method

string sql = objs.ToString();

答案 1 :(得分:6)

另一个选项如果你使用Entity Framework 6是使用新功能来记录什么是发生的,你可以获得t-sql和查询时间:

Logging and Intercepting Database Operations

using (var context = new BlogContext()) 
{ 
    context.Database.Log = Console.Write; //here, you can write this info to a text file for example.

    // Your code here... 
}

答案 2 :(得分:4)

我认为这些帖子可能对您有所帮助:

1)How to view LINQ Generated SQL statements?

2)How do I view the SQL generated by the Entity Framework?

几个例子(来自上面):

var sql = ((System.Data.Objects.ObjectQuery)objs).ToTraceString();
var sql = objs.ToString();

.ToTraceString()上的文档可在此处找到:

MSDN trace string documentation