Linq to sql 如何从已编译的Linq查询中提取Sql命令
在正常(未编译)Linq to Sql查询中,您可以通过以下代码从IQueryable中提取SQLCommand:Linq to sql 如何从已编译的Linq查询中提取Sql命令,linq-to-sql,sqlcommand,compiled-query,Linq To Sql,Sqlcommand,Compiled Query,在正常(未编译)Linq to Sql查询中,您可以通过以下代码从IQueryable中提取SQLCommand: SqlCommand cmd = (SqlCommand)table.Context.GetCommand(query); 是否可以对编译后的查询执行相同的操作 以下代码为我提供了对已编译查询的委托: private static readonly Func<Data.DAL.Context, string, IQueryable<Word>&g
SqlCommand cmd = (SqlCommand)table.Context.GetCommand(query);
是否可以对编译后的查询执行相同的操作
以下代码为我提供了对已编译查询的委托:
private static readonly Func<Data.DAL.Context, string, IQueryable<Word>> Query_Get =
CompiledQuery.Compile<Data.DAL.Context, string, IQueryable<Word>>(
(context, name) =>
from r in context.GetTable<Word>()
where r.Name == name
select r);
private static readonly Func Query\u Get=
CompiledQuery.Compile(
(上下文、名称)=>
来自context.GetTable()中的r
其中r.Name==Name
选择r);
当我使用它生成IQueryable并尝试提取SqlCommand时,它似乎不起作用。调试代码时,我可以看到SqlCommand返回的命令文本“非常”有用,“选择NULL作为[EMPTY]”
using (var db = new Data.DAL.Context())
{
IQueryable<Word> query = Query_Get(db, "word");
SqlCommand cmd = (SqlCommand)db.GetCommand(query);
Console.WriteLine(cmd != null ? cmd.CommandText : "Command Not Found");
}
使用(var db=new Data.DAL.Context())
{
IQueryable query=query_Get(db,“word”);
SqlCommand cmd=(SqlCommand)db.GetCommand(query);
Console.WriteLine(cmd!=null?cmd.CommandText:“未找到命令”);
}
我在谷歌上找不到任何关于这一特定场景的信息,因为毫无疑问,这不是一个常见的尝试
所以。。。。有什么想法吗?一定有办法从.NET获取数据,但您可以分析SQL Server数据库并捕获发送到该数据库的SQL。您可以从SQL Management Studio执行此操作。您可以使用DataContext日志:
db.Log = Console.Out;
有什么发现吗?我也面临同样的挑战。