public static void Making_use_of_variable_multiple_times_doesnt_cause_redundant_joins() { const string expectedSqlProducts = @"SELECT [Extent1].[Name] AS [Name] FROM [dbo].[Products] AS [Extent1] LEFT OUTER JOIN [dbo].[ProductModels] AS [Extent2] ON [Extent1].[ProductModelID] = [Extent2].[ProductModelID] INNER JOIN [dbo].[StringInstruments] AS [Extent3] ON [Extent1].[StringInstrumentId] = [Extent3].[StringInstrumentId] WHERE ([Extent2].[ModifiedDate] >= @p__linq__0) AND ([Extent3].[ProductionDate]=@p__linq__1) AND ([Extent2].[ModifiedDate] <= @p__linq__2)"; const string expectedSqlStrings = @"SELECT [Extent1].[Name] AS [Name] FROM [dbo].[Strings] AS [Extent1] INNER JOIN [dbo].[StringInstruments] AS [Extent2] ON [Extent1].[StringInstrumentId] = [Extent2].[StringInstrumentId] WHERE ([Extent2].[ProductionDate] >= @p__linq__0) AND ([Extent2].[ProductionDate] <= @p__linq__1)"; Database.SetInitializer <Codeplex199Context>(null); using (var context = new Codeplex199Context()) { context.Configuration.UseDatabaseNullSemantics = true; context.Configuration.LazyLoadingEnabled = false; var MinDate = new DateTime(2011, 02, 03); var MaxDate = new DateTime(2011, 03, 04); var ProductionDate = new DateTime(2011, 03, 04); var query = context.Products .Where(p => p.ProductModel.ModifiedDate >= MinDate && p.StringInstrument.ProductionDate == ProductionDate && p.ProductModel.ModifiedDate <= MaxDate) .Select(p => p.Name); QueryTestHelpers.VerifyQuery(query, expectedSqlProducts); query = context.Strings .Where(s => s.StringInstrument.ProductionDate >= MinDate && s.StringInstrument.ProductionDate <= MaxDate) .Select(s => s.Name); QueryTestHelpers.VerifyQuery(query, expectedSqlStrings); } }
public static void Making_use_of_variable_multiple_times_doesnt_cause_redundant_joins() { const string expectedSqlProducts = @"SELECT [Extent1].[Name] AS [Name] FROM [dbo].[Products] AS [Extent1] LEFT OUTER JOIN [dbo].[ProductModels] AS [Extent2] ON [Extent1].[ProductModelID] = [Extent2].[ProductModelID] INNER JOIN [dbo].[StringInstruments] AS [Extent3] ON [Extent1].[StringInstrumentId] = [Extent3].[StringInstrumentId] WHERE ([Extent2].[ModifiedDate] >= @p__linq__0) AND ([Extent3].[ProductionDate]=@p__linq__1) AND ([Extent2].[ModifiedDate] <= @p__linq__2)"; const string expectedSqlStrings = @"SELECT [Extent1].[Name] AS [Name] FROM [dbo].[Strings] AS [Extent1] INNER JOIN [dbo].[StringInstruments] AS [Extent2] ON [Extent1].[StringInstrumentId] = [Extent2].[StringInstrumentId] WHERE ([Extent2].[ProductionDate] >= @p__linq__0) AND ([Extent2].[ProductionDate] <= @p__linq__1)"; Database.SetInitializer<Codeplex199Context>(null); using (var context = new Codeplex199Context()) { context.Configuration.UseDatabaseNullSemantics = true; context.Configuration.LazyLoadingEnabled = false; var MinDate = new DateTime(2011, 02, 03); var MaxDate = new DateTime(2011, 03, 04); var ProductionDate = new DateTime(2011, 03, 04); var query = context.Products .Where(p => p.ProductModel.ModifiedDate >= MinDate && p.StringInstrument.ProductionDate == ProductionDate && p.ProductModel.ModifiedDate <= MaxDate) .Select(p => p.Name); QueryTestHelpers.VerifyQuery(query, expectedSqlProducts); query = context.Strings .Where(s => s.StringInstrument.ProductionDate >= MinDate && s.StringInstrument.ProductionDate <= MaxDate) .Select(s => s.Name); QueryTestHelpers.VerifyQuery(query, expectedSqlStrings); } }