Прикрепление идентификатора / метки к LINQ to SQL-сгенерированному коду? - PullRequest
0 голосов
/ 19 сентября 2008

Меня интересует отслеживание вызовов базы данных, сделанных LINQ to SQL, к .NET-коду, который сгенерировал этот вызов. Например, администратор базы данных может быть обеспокоен тем, что определенный план выполнения в кэше работает плохо. Если, например, администратор базы данных скажет разработчику обратиться к следующему коду ...

exec sp_executesql N'SELECT [t0].[CustomerID]
FROM [dbo].[Customers] AS [t0]
WHERE [t0].[ContactName] LIKE @p0
ORDER BY [t0].[CompanyName]',
'N'@p0 nvarchar(2)',@p0=N'c%'

... не сразу очевидно, какой оператор LINQ произвел вызов. Конечно, вы можете искать через класс «Клиенты» в автоматически сгенерированном контексте данных, но это было бы только начало. С большим приложением это может быстро стать неуправляемым.

Есть ли способ прикрепить идентификатор или метку к коду SQL, сгенерированному и выполненному LINQ to SQL? Размышляя вслух, вот функция расширения, называемая «TagWith», которая концептуально иллюстрирует то, что я заинтересован делать.

var customers = from c in context.Customers
                where c.CompanyName.StartsWith("c")
                orderby c.CompanyName
                select c.CustomerID;

foreach (var CustomerID in customers.TagWith("CustomerList4"))
{
    Console.WriteLine(CustomerID);
}

Если идентификатор / метка «CustomerList4» окажется в автоматически сгенерированном SQL, я бы установил. Спасибо.

Ответы [ 2 ]

1 голос
/ 19 сентября 2008

Нет общедоступного способа изменить базовый SQL, который генерирует LINQ to SQL, для реализации такого средства тегирования. Вы можете реализовать свойство Log таким образом, чтобы оно записывало текстовый файл журнала с некоторой информацией о стеке вызовов, чтобы показать, какие методы сгенерировали какие операторы SQL для справки.

1 голос
/ 19 сентября 2008

Вы смотрели на захват T-SQL с помощью свойства DataContext.Log? Если вы смогли записать его в объект, который также имел свойство тега, вы могли бы каталогизировать SQL, выполняемый вашим приложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...