public void TestQueryWithTop1AndCompositeKeyComparision() { const string sql = @"SELECT TOP (1) [Extent1].[MyProductId] AS [MyProductId], [Extent1].[Name] AS [Name], [Extent1].[Price] AS [Price], [Extent1].[CategoryId] AS [CategoryId], [Extent1].[UserId] AS [UserId] FROM [dbo].[Products] AS [Extent1] WHERE [Extent1].[MyProductId] = @p__linq__0 and [Extent1].[UserId] = 1"; var visitor = new UseFirstLevelCacheVisitor { Keys = new HashSet <string> { "MyProductId", "UserId" } }; RunTSqlFragmentVisitor.AnalyzeFragmentVisitorBase(sql, sql.ComputeHash(), visitor); Assert.IsTrue(visitor.IsSuspected); }
public void RunAnalysisVisitor(CommandResult commandResult) { var command = PluginContext.ProfilerData.Commands .FirstOrDefault(x => x.CommandId == commandResult.CommandId && x.ApplicationIdentity.Equals(commandResult.ApplicationIdentity)); if (command == null) { return; } RunAnalysisVisitorOnCommand(() => { var visitor = new UseFirstLevelCacheVisitor { Keys = getPrimaryKeys(commandResult) }; var isUsingKeysInQuery = RunTSqlFragmentVisitor.AnalyzeFragmentVisitorBase(command.Sql, command.SqlHash, visitor); if (!isUsingKeysInQuery) { return(false); } return(isUsingFirstOrDefault(command)); }, command); }
public void TestQueryWithTop1AndKeyComparisionWithoutAlias() { const string sql = @"SELECT TOP (1) [MyProductId], [Name], [Price], [CategoryId], [UserId] FROM [Products] WHERE [MyProductId] = @p__linq__0"; var visitor = new UseFirstLevelCacheVisitor { Keys = new HashSet <string> { "MyProductId" } }; RunTSqlFragmentVisitor.AnalyzeFragmentVisitorBase(sql, sql.ComputeHash(), visitor); Assert.IsTrue(visitor.IsSuspected); }