LINQ to SQL调试变量

时间:2009-08-02 21:06:59

标签: c# visual-studio-2008 linq-to-sql

我正在使用LINQ to SQL和C#构建查询,当我检查构建的最终T-SQL时,where子句如下所示:

WHERE ([t0].[T_SUBJECT] LIKE @p0) AND ([t0].[T_SUBJECT] LIKE @p1)

T-SQL的结构看起来是正确的,我可以使用SQL Server Management Studio(SSMS)测试它,但在代码中它不起作用。我希望能够看一下@ p0和@ p1的值。有人知道如何使用VS2008检查这些值吗?

2 个答案:

答案 0 :(得分:2)

如果为上下文设置日志(使用Log属性),它应该在执行查询时显示值。这可能不像预先检查它们那样方便,但它总比没有好。

例如,你可能会得到类似的东西(例如无耻地从书中捏):

SELECT [t0].[UserID], [t0].[Name], [t0].[UserType]
FROM [dbo].[DefectUser] AS [t0]
WHERE [t0].[Name] = @p0
-- @p0: Input String (Size = 11; Prec = 0; Scale = 0) [Tim Trotter]

最后一行是显示实际参数值的位。

答案 1 :(得分:0)

试试这个:How to: Display Generated SQL (LINQ to SQL)

从那里引用:  以下示例使用Log属性在执行代码之前在控制台窗口中显示SQL代码。您可以将此属性与查询,插入,更新和删除命令一起使用。

控制台窗口中的行是您执行后面的Visual Basic或C#代码时会看到的。

SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactT

itle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Coun

try], [t0].[Phone], [t0].[Fax]

FROM [dbo].[Customers] AS [t0]

WHERE [t0].[City] = @p0

-- @p0: Input String (Size = 6; Prec = 0; Scale = 0) [London]

-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20810.0

AROUT

BSBEV

CONSH

EASTC

NORTS

SEVES