2013-02-15 131 views
0

我对我的一些查询有一些性能问题。当我query Sql Server for a list of slow queries,我发现一些由Linq-To-Entities生成的查询。如何查找出现在Sql Server Sloq查询日志中的linq生成的Sql查询?

例如:

SELECT 
[Project12].[OrderId] AS [OrderId], 
[Project12].[OrderDate] AS [OrderDate], 
[Project12].[OrderStatusId] AS [OrderStatusId], 
[Project12].[Name] AS [Name], 
[Project12].[C1] AS [C1], 
[Project12].[ClientId] AS [ClientId], 
[Project12].[ClientCode] AS [ClientCode], 
[Project12].[TwoLetterCode] AS [TwoLetterCode], 
[Project12].[Identifier] AS [Identifier], 
[Project12].[StartDate] AS [StartDate], 
[Project12].[Code] AS [Code], 
[Project12].[C2] AS [C2], 
[Project12].[C3] AS [C3], 
[Project12].[C4] AS [C4], 
[Project12].[C5] AS [C5] 
FROM (SELECT 
    [Project11].[OrderId] AS [OrderId], 
    [Project11].[ClientId] AS [ClientId], 
    [Project11].[StartDate] AS [StartDate], 
    [Project11].[Identifier] AS [Identifier], 

.... 

我试图用型动物领域找到我在那里查询这些领域,但我找不到在哪里。

什么技术可以用来找到哪些Linq查询生成一些SQL?

回答

0

我相信你可以使用DataContext.Log方法的LINQ to SQL(我相信这将会对LINQ工作实体以及):用一个StreamWriter http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.log.aspx

钩了,你可以看到你的Linq是在做。然后,您可以使用此日志与您从SQL分析器日志中获得的内容进行比较,并查看正在做什么来比较两者。

我还喜欢在直接SQL中调试东西时使用LinqPad。你甚至可以将DLL的实体框架直接导入到它的查询中。

http://www.linqpad.net/

+0

您不能在EF中使用DataContext.Log。 – 2013-02-15 18:16:06

0

我贴了一些技术,可能会有助于在ThinqLinq隔离您的LINQ的性能问题。