2009-12-17 71 views
1

当您登录通过DataContext对象上Log财产LINQ到SQL的查询的输出,你会得到类似的输出:执行LINQ-to-SQL调试输出?

SELECT [t0].[fullaname], [t0].[Worker], [t0].[Office] 
FROM [dbo].[Workers] AS [t0] 
WHERE [t0].[OfficeID] = @p0 
ORDER BY [t0].[Name] 
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [412] 
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.30729.1 

在这个例子中,我只是拉了回来大约每Worker一些信息该局与ID = 412。但是,由于LINQ输出的注释格式为@p0,因此此输出不会直接在SQL Management Studio查询窗口中执行。

有谁知道是否有一个存储过程采用这种格式,所以我可以执行它?我查看了参数化查询特效,但也许我只是没有看到它。如果没有程序,我即将编写一个解析器,将此格式转换为“普通”SQL ...

谢谢!

注:

我知道我可以在此之上定义@p0,如图Help with SQL/LINQ Debugging,但 - 很多这些查询我采取像20个的参数,所以它成为了很多工作复制和粘贴...

回答

1

没有办法直接执行上面的操作,而无需手动(或通过某种类型的解析程序)插入参数的值。

如果你使用sql profiler,你会得到一个可执行的动态sql语句,这是一个更好的方法,但我意识到这并不总是可能的。

+0

是的 - 我想我总是可以打开分析器...虽然很高兴能够从开发环境中使用DebuggerWriter来抓取它,例如:http://www.u2u.info/Blogs/Kris /Lists/Posts/Post.aspx?ID=11 – 2009-12-17 15:49:05

+0

我最终编写了一个正则表达式解析器,它可以搜索并替换必要的值。很高兴能够轻松执行它! – 2010-01-06 15:59:58