Entity framework 让LinqPad在使用实体框架时显示与sql Server探查器相同的sql

Entity framework 让LinqPad在使用实体框架时显示与sql Server探查器相同的sql,entity-framework,linqpad,sql-server-profiler,Entity Framework,Linqpad,Sql Server Profiler,如何让LinqPad显示与SQL Server Profiler相同的生成SQL 更具体地说,我希望LinqPad SQL格式在适当的时候包含“sp_executesql”(参见下面的示例代码) 我已正确使用.NET DataAccessLayer项目dll安装了LinqPad 这意味着我已经将连接设置为使用我的ObjectContext,并选择了我的EntityDataModel 因此我可以通过LinqPad调用一个C#static方法,比如MyDalClass.GetUser(1),它在内

如何让LinqPad显示与SQL Server Profiler相同的生成SQL

更具体地说,我希望LinqPad SQL格式在适当的时候包含“sp_executesql”(参见下面的示例代码)

我已正确使用.NET DataAccessLayer项目dll安装了LinqPad

  • 这意味着我已经将连接设置为使用我的
    ObjectContext
    ,并选择了我的EntityDataModel

  • 因此我可以通过LinqPad调用一个C#static方法,比如
    MyDalClass.GetUser(1)
    ,它在内部使用ef4.4

当我查看LinqPad的SQL选项卡时,它将SQL显示为:

-- Region Parameters
DECLARE @p__linq__0 Int = 1
-- EndRegion
SELECT TOP (1) 
[Extent1].[UserId] AS [InviteID], 
[Extent1].[UserName] AS [UserName]
FROM [dbo].[Users] AS [Extent1]
WHERE [Extent1].[UserId] = @p__linq__0
但当我查看SQL Server Profiler时,它显示为:

exec sp_executesql N'SELECT TOP (1) 
[Extent1].[UserId] AS [InviteID], 
[Extent1].[UserName] AS [UserName]
FROM [dbo].[Users] AS [Extent1]
WHERE [Extent1].[UserId] = @p__linq__0',N'@p__linq__0 int',@p__linq__0=1
我想让LinqPad SQL以与SQL Server Profiler相同的方式显示它 (我在网上搜索过,但找不到答案)


谢谢你的帮助和建议

似乎到
sp_executesql
的转换是由.NET的
SQLCommand
在内部完成的,因此可能无法执行实际的SQL查询。一些相关文章:感谢Keith提供的信息!您提供的链接确认SQLCommand确实在改变EF生成的SQL(我感觉可能有什么东西在改变EF SQL…但我想可能SQL Server Profiler正在对其进行优化/规范化并显示此结果)。再次感谢您的澄清:-)