Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }