我希望以编程方式获取已翻译的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
答案 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()
上的文档可在此处找到: