我有兴趣将 LINQ to SQL 进行的数据库调用跟踪回生成调用的 .NET 代码。例如,DBA 可能担心某个特定的缓存执行计划表现不佳。例如,如果 DBA 要告诉开发人员解决以下代码...
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 语句产生了调用。当然,您可以在自动生成的数据上下文中搜索“客户”类,但这只是一个开始。对于大型应用程序,这可能很快变得难以管理。
有没有办法将 ID 或标签附加到由 LINQ to SQL 生成和执行的 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”ID/标签最终出现在自动生成的 SQL 中,我将被设置。谢谢。