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 ステートメントが呼び出しを生成したかはすぐにはわかりません。確かに、自動生成されたデータ コンテキストで "Customers" クラスを検索することはできますが、それはほんの始まりにすぎません。大規模なアプリケーションでは、これはすぐに管理不能になる可能性があります。
LINQ to SQL によって生成および実行される SQL コードに ID またはラベルを添付する方法はありますか? 大声で考えてみると、「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 で終わる場合、私は設定されます。ありがとう。