public void Query_with_comparison_in_subquery_works_with_clr_semantics() { using (var context = new NullSemanticsContext()) { var query = context.Entities.Where(c => context.Entities.Where(e => e.Foo != e.Bar).Count() == context.Entities.Where(e => e.Foo != e.Bar).FirstOrDefault().Id); var expectedSql = @"SELECT [Extent1].[Id] AS [Id], [Extent1].[Foo] AS [Foo], [Extent1].[Bar] AS [Bar] FROM [dbo].[NullSemanticsEntities] AS [Extent1] LEFT OUTER JOIN (SELECT TOP (1) [Extent2].[Id] AS [Id] FROM [dbo].[NullSemanticsEntities] AS [Extent2] WHERE NOT (([Extent2].[Foo] = [Extent2].[Bar]) AND ((CASE WHEN ([Extent2].[Foo] IS NULL) THEN cast(1 as bit) ELSE cast(0 as bit) END) = (CASE WHEN ([Extent2].[Bar] IS NULL) THEN cast(1 as bit) ELSE cast(0 as bit) END))) ) AS [Limit1] ON 1 = 1 INNER JOIN (SELECT COUNT(1) AS [A1] FROM [dbo].[NullSemanticsEntities] AS [Extent3] WHERE NOT (([Extent3].[Foo] = [Extent3].[Bar]) AND ((CASE WHEN ([Extent3].[Foo] IS NULL) THEN cast(1 as bit) ELSE cast(0 as bit) END) = (CASE WHEN ([Extent3].[Bar] IS NULL) THEN cast(1 as bit) ELSE cast(0 as bit) END))) ) AS [GroupBy1] ON ([GroupBy1].[A1] = [Limit1].[Id]) OR (([GroupBy1].[A1] IS NULL) AND ([Limit1].[Id] IS NULL))"; QueryTestHelpers.VerifyDbQuery(query, expectedSql); var expected = context.Entities.ToList().Where(c => context.Entities.ToList().Where(e => e.Foo == e.Bar).Count() != context.Entities.ToList().Where(e => e.Foo != e.Bar).FirstOrDefault().Id).ToList(); QueryTestHelpers.VerifyQueryResult(expected, query.ToList(), (o, i) => o == i); } }
public void Query_with_comparison_in_projection_works_with_clr_semantics() { using (var context = new NullSemanticsContext()) { var query = context.Entities.Select(e => e.Foo == e.Bar); var expectedSql = @"SELECT CASE WHEN (([Extent1].[Foo] = [Extent1].[Bar]) OR (([Extent1].[Foo] IS NULL) AND ([Extent1].[Bar] IS NULL))) THEN cast(1 as bit) WHEN ( NOT (([Extent1].[Foo] = [Extent1].[Bar]) AND ((CASE WHEN ([Extent1].[Foo] IS NULL) THEN cast(1 as bit) ELSE cast(0 as bit) END) = (CASE WHEN ([Extent1].[Bar] IS NULL) THEN cast(1 as bit) ELSE cast(0 as bit) END)))) THEN cast(0 as bit) END AS [C1] FROM [dbo].[NullSemanticsEntities] AS [Extent1]"; QueryTestHelpers.VerifyDbQuery(query, expectedSql); var expected = context.Entities.ToList().Select(e => e.Foo == e.Bar).ToList(); QueryTestHelpers.VerifyQueryResult(expected, query.ToList(), (o, i) => o == i); } }