Отладочные переменные LINQ to SQL - PullRequest
0 голосов
/ 03 августа 2009

Я создаю запрос, используя 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 ]

2 голосов
/ 03 августа 2009

Если вы задаете журнал для контекста (со свойством 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]

Последняя строка - это бит, показывающий фактическое значение параметра.

0 голосов
/ 03 августа 2009

Попробуйте: Как отобразить сгенерированный 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 
...