diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8487a62..36157ee 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,7 +29,9 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v1 with: - dotnet-version: 8.0.x + dotnet-version: | + 8.0.x + 9.0.x - name: Restore dependencies run: dotnet restore - name: Build @@ -46,7 +48,7 @@ jobs: - name: Setup .NET uses: actions/setup-dotnet@v1 with: - dotnet-version: 8.0.x + dotnet-version: 9.0.x - name: Pack run: | dotnet pack -v normal -c Debug --include-symbols --include-source -p:PackageVersion=4.0.0-pre-$GITHUB_RUN_ID -o nupkg diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6f1fb37..1541c27 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: - dotnet-version: 8.0.x + dotnet-version: 9.0.x include-prerelease: True - name: Create Release NuGet package run: | diff --git a/Directory.Build.props b/Directory.Build.props index b5a6e4e..3f8c28f 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -6,6 +6,7 @@ enable true CS1591 + false enable diff --git a/Directory.Packages.props b/Directory.Packages.props index d25f1f4..fd8a688 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -2,21 +2,28 @@ true - - - - + - - - - + + + + + + + + + + + + + + - - + + \ No newline at end of file diff --git a/global.json b/global.json index bfca90d..20f482a 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,5 @@ { "sdk": { - "version": "8.0.400" + "version": "9.0.100" } } \ No newline at end of file diff --git a/src/EntityFrameworkCore.Projectables/Services/ProjectableExpressionReplacer.cs b/src/EntityFrameworkCore.Projectables/Services/ProjectableExpressionReplacer.cs index c9d8ad4..c334b4e 100644 --- a/src/EntityFrameworkCore.Projectables/Services/ProjectableExpressionReplacer.cs +++ b/src/EntityFrameworkCore.Projectables/Services/ProjectableExpressionReplacer.cs @@ -1,9 +1,8 @@ using System.Collections; -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using System.Linq; using System.Linq.Expressions; using System.Reflection; +using System.Runtime.CompilerServices; using EntityFrameworkCore.Projectables.Extensions; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Query; @@ -12,9 +11,10 @@ namespace EntityFrameworkCore.Projectables.Services { public sealed class ProjectableExpressionReplacer : ExpressionVisitor { - readonly IProjectionExpressionResolver _resolver; - readonly ExpressionArgumentReplacer _expressionArgumentReplacer = new(); - readonly Dictionary _projectableMemberCache = new(); + private readonly IProjectionExpressionResolver _resolver; + private readonly ExpressionArgumentReplacer _expressionArgumentReplacer = new(); + private readonly Dictionary _projectableMemberCache = new(); + private IQueryProvider? _currentQueryProvider; private bool _disableRootRewrite; private IEntityType? _entityType; @@ -60,6 +60,9 @@ bool TryGetReflectedExpression(MemberInfo memberInfo, [NotNullWhen(true)] out La public Expression? Replace(Expression? node) { _disableRootRewrite = false; + _currentQueryProvider = null; + _entityType = null; + var ret = Visit(node); if (_disableRootRewrite) @@ -190,6 +193,29 @@ protected override Expression VisitMethodCall(MethodCallExpression node) protected override Expression VisitMember(MemberExpression node) { + // Evaluate captured variables in closures that contain EF queries to inline them into the main query + if (node.Expression is ConstantExpression constant && + constant.Type.Attributes.HasFlag(TypeAttributes.NestedPrivate) && + Attribute.IsDefined(constant.Type, typeof(CompilerGeneratedAttribute), inherit: true)) + { + try + { + var value = Expression + .Lambda>(Expression.Convert(node, typeof(object))) + .Compile() + .Invoke(); + + if (value is IQueryable queryable && ReferenceEquals(queryable.Provider, _currentQueryProvider)) + { + return Visit(queryable.Expression); + } + } + catch + { + // Ignore evaluation exceptions - continue with normal processing + } + } + var nodeExpression = node.Expression switch { UnaryExpression { NodeType: ExpressionType.Convert, Type: { IsInterface: true } type, Operand: { } operand } when type.IsAssignableFrom(operand.Type) @@ -232,6 +258,7 @@ protected override Expression VisitExtension(Expression node) if (node is EntityQueryRootExpression root) { _entityType = root.EntityType; + _currentQueryProvider = root.QueryProvider; } return base.VisitExtension(node); diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexArgumentsTests.ArrayOfPrimitivesArguments.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexArgumentsTests.ArrayOfPrimitivesArguments.DotNet9_0.verified.txt new file mode 100644 index 0000000..f12934f --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexArgumentsTests.ArrayOfPrimitivesArguments.DotNet9_0.verified.txt @@ -0,0 +1,8 @@ +DECLARE @__validArray_0 nvarchar(4000) = N'[1,2,3]'; + +SELECT [t].[Id] +FROM [TestEntity] AS [t] +WHERE [t].[Id] IN ( + SELECT [v].[value] + FROM OPENJSON(@__validArray_0) WITH ([value] int '$') AS [v] +) \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexArgumentsTests.ListOfPrimitivesArguments.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexArgumentsTests.ListOfPrimitivesArguments.DotNet9_0.verified.txt new file mode 100644 index 0000000..f534e45 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexArgumentsTests.ListOfPrimitivesArguments.DotNet9_0.verified.txt @@ -0,0 +1,8 @@ +DECLARE @__validList_0 nvarchar(4000) = N'[1,2,3]'; + +SELECT [t].[Id] +FROM [TestEntity] AS [t] +WHERE [t].[Id] IN ( + SELECT [v].[value] + FROM OPENJSON(@__validList_0) WITH ([value] int '$') AS [v] +) \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexArgumentsTests.ParamsOfPrimitivesArguments.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexArgumentsTests.ParamsOfPrimitivesArguments.DotNet9_0.verified.txt new file mode 100644 index 0000000..53c8a5b --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexArgumentsTests.ParamsOfPrimitivesArguments.DotNet9_0.verified.txt @@ -0,0 +1,3 @@ +SELECT [t].[Id] +FROM [TestEntity] AS [t] +WHERE [t].[Id] IN (1, 2, 3) \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexModelTests.ProjectOverCollectionNavigationProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexModelTests.ProjectOverCollectionNavigationProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..a79c3ab --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexModelTests.ProjectOverCollectionNavigationProperty.DotNet9_0.verified.txt @@ -0,0 +1,10 @@ +SELECT [o1].[RecordDate] +FROM [User] AS [u] +INNER JOIN ( + SELECT [o0].[RecordDate], [o0].[UserId] + FROM ( + SELECT [o].[RecordDate], [o].[UserId], ROW_NUMBER() OVER(PARTITION BY [o].[UserId] ORDER BY [o].[RecordDate] DESC) AS [row] + FROM [Order] AS [o] + ) AS [o0] + WHERE [o0].[row] <= 2 +) AS [o1] ON [u].[Id] = [o1].[UserId] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexModelTests.ProjectOverMethodTakingDbContext.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexModelTests.ProjectOverMethodTakingDbContext.DotNet9_0.verified.txt new file mode 100644 index 0000000..1417cfa --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexModelTests.ProjectOverMethodTakingDbContext.DotNet9_0.verified.txt @@ -0,0 +1,10 @@ +SELECT [o1].[Id], [o1].[RecordDate], [o1].[UserId] +FROM [User] AS [u] +LEFT JOIN ( + SELECT [o0].[Id], [o0].[RecordDate], [o0].[UserId] + FROM ( + SELECT [o].[Id], [o].[RecordDate], [o].[UserId], ROW_NUMBER() OVER(PARTITION BY [o].[UserId] ORDER BY [o].[RecordDate] DESC) AS [row] + FROM [Order] AS [o] + ) AS [o0] + WHERE [o0].[row] <= 1 +) AS [o1] ON [u].[Id] = [o1].[UserId] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexModelTests.ProjectOverNavigationProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexModelTests.ProjectOverNavigationProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..0178f4c --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ComplexModelTests.ProjectOverNavigationProperty.DotNet9_0.verified.txt @@ -0,0 +1,6 @@ +SELECT ( + SELECT TOP(1) [o].[RecordDate] + FROM [Order] AS [o] + WHERE [u].[Id] = [o].[UserId] + ORDER BY [o].[RecordDate] DESC) +FROM [User] AS [u] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/DefaultValueTests.ExplicitDefaultValueIsSupported.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/DefaultValueTests.ExplicitDefaultValueIsSupported.DotNet9_0.verified.txt new file mode 100644 index 0000000..1bc0597 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/DefaultValueTests.ExplicitDefaultValueIsSupported.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] + 2 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/EntityFrameworkCore.Projectables.FunctionalTests.csproj b/tests/EntityFrameworkCore.Projectables.FunctionalTests/EntityFrameworkCore.Projectables.FunctionalTests.csproj index bb5b0c5..96c4d7a 100644 --- a/tests/EntityFrameworkCore.Projectables.FunctionalTests/EntityFrameworkCore.Projectables.FunctionalTests.csproj +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/EntityFrameworkCore.Projectables.FunctionalTests.csproj @@ -1,6 +1,7 @@  + net8.0;net9.0 false diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/ExtensionsMethods/ExtensionMethodTests.ExtensionMethodAcceptingDbContext.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ExtensionsMethods/ExtensionMethodTests.ExtensionMethodAcceptingDbContext.DotNet9_0.verified.txt new file mode 100644 index 0000000..f92c2fa --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ExtensionsMethods/ExtensionMethodTests.ExtensionMethodAcceptingDbContext.DotNet9_0.verified.txt @@ -0,0 +1,7 @@ +SELECT [e1].[Id] +FROM [Entity] AS [e] +OUTER APPLY ( + SELECT TOP(1) [e0].[Id] + FROM [Entity] AS [e0] + WHERE [e0].[Id] > [e].[Id] +) AS [e1] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/ExtensionsMethods/ExtensionMethodTests.ExtensionOnPrimitive.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ExtensionsMethods/ExtensionMethodTests.ExtensionOnPrimitive.DotNet9_0.verified.txt new file mode 100644 index 0000000..d0c82fc --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ExtensionsMethods/ExtensionMethodTests.ExtensionOnPrimitive.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] * [e].[Id] +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/ExtensionsMethods/ExtensionMethodTests.SelectProjectableExtensionMethod.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ExtensionsMethods/ExtensionMethodTests.SelectProjectableExtensionMethod.DotNet9_0.verified.txt new file mode 100644 index 0000000..5cc0e40 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ExtensionsMethods/ExtensionMethodTests.SelectProjectableExtensionMethod.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] + 1 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/ExtensionsMethods/ExtensionMethodTests.SelectProjectableExtensionMethod2.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ExtensionsMethods/ExtensionMethodTests.SelectProjectableExtensionMethod2.DotNet9_0.verified.txt new file mode 100644 index 0000000..43ca93d --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ExtensionsMethods/ExtensionMethodTests.SelectProjectableExtensionMethod2.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] + 1 + 1 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/Generics/GenericEntityTests.HasMatchingStringKeyConversion_GetsTranslated.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/Generics/GenericEntityTests.HasMatchingStringKeyConversion_GetsTranslated.DotNet9_0.verified.txt new file mode 100644 index 0000000..85bfd00 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/Generics/GenericEntityTests.HasMatchingStringKeyConversion_GetsTranslated.DotNet9_0.verified.txt @@ -0,0 +1,5 @@ +DECLARE @__key_0 varchar(11) = 'x'; + +SELECT [c].[Id] +FROM [ConcreteEntity] AS [c] +WHERE CONVERT(varchar(11), [c].[Id]) = @__key_0 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/Generics/GenericFunctionTests.DefaultIfIdIsNegative.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/Generics/GenericFunctionTests.DefaultIfIdIsNegative.DotNet9_0.verified.txt new file mode 100644 index 0000000..f42386a --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/Generics/GenericFunctionTests.DefaultIfIdIsNegative.DotNet9_0.verified.txt @@ -0,0 +1,5 @@ +SELECT CASE + WHEN [e].[Id] >= 0 THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END, [e].[Id], [e].[Name] +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/Generics/MultipleGenericsTests.TestMultipleArguments.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/Generics/MultipleGenericsTests.TestMultipleArguments.DotNet9_0.verified.txt new file mode 100644 index 0000000..a441b21 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/Generics/MultipleGenericsTests.TestMultipleArguments.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT CAST(1 AS bit), [e].[Id], [e].[Name] +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedMembersTests.ProjectOverMethodTakingDbContext.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedMembersTests.ProjectOverMethodTakingDbContext.DotNet9_0.verified.txt new file mode 100644 index 0000000..201760c --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedMembersTests.ProjectOverMethodTakingDbContext.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT CAST([c].[Age] AS float) / [c].[AverageLifespan] AS [LifeProgression], CAST([c].[MentalAge] AS float) / [c].[AverageLifespan] AS [MentalLifeProgression] +FROM [Cat] AS [c] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverExtensionMethod.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverExtensionMethod.DotNet9_0.verified.txt new file mode 100644 index 0000000..79a9f39 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverExtensionMethod.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT 4 +FROM [Concrete] AS [c] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverImplementedMethod.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverImplementedMethod.DotNet9_0.verified.txt new file mode 100644 index 0000000..6be5124 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverImplementedMethod.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT 2 +FROM [Concrete] AS [c] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverImplementedProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverImplementedProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..6be5124 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverImplementedProperty.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT 2 +FROM [Concrete] AS [c] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverInheritedMethodImplementation.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverInheritedMethodImplementation.DotNet9_0.verified.txt new file mode 100644 index 0000000..960d720 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverInheritedMethodImplementation.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT 2 +FROM [MoreConcrete] AS [m] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverInheritedPropertyImplementation.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverInheritedPropertyImplementation.DotNet9_0.verified.txt new file mode 100644 index 0000000..960d720 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverInheritedPropertyImplementation.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT 2 +FROM [MoreConcrete] AS [m] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverOverriddenMethodImplementation.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverOverriddenMethodImplementation.DotNet9_0.verified.txt new file mode 100644 index 0000000..6be5124 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverOverriddenMethodImplementation.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT 2 +FROM [Concrete] AS [c] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverOverriddenPropertyImplementation.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverOverriddenPropertyImplementation.DotNet9_0.verified.txt new file mode 100644 index 0000000..6be5124 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverOverriddenPropertyImplementation.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT 2 +FROM [Concrete] AS [c] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverProvider.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverProvider.DotNet9_0.verified.txt new file mode 100644 index 0000000..558afe4 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/InheritedModelTests.ProjectOverProvider.DotNet9_0.verified.txt @@ -0,0 +1,3 @@ +SELECT [c].[Id] +FROM [BaseProvider] AS [b] +INNER JOIN [Concrete] AS [c] ON [b].[Id] = [c].[BaseProviderId] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/MethodGroupTests.ProjectOverMethodGroup.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/MethodGroupTests.ProjectOverMethodGroup.DotNet9_0.verified.txt new file mode 100644 index 0000000..c1dc490 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/MethodGroupTests.ProjectOverMethodGroup.DotNet9_0.verified.txt @@ -0,0 +1,4 @@ +SELECT [e].[Id], [e0].[Id] + 1, [e0].[Id] +FROM [Entity] AS [e] +LEFT JOIN [Entity] AS [e0] ON [e].[Id] = [e0].[EntityId] +ORDER BY [e].[Id] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/ModuleInitializer.cs b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ModuleInitializer.cs new file mode 100644 index 0000000..16eaa1e --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/ModuleInitializer.cs @@ -0,0 +1,15 @@ +using System.Runtime.CompilerServices; + +namespace EntityFrameworkCore.Projectables.FunctionalTests +{ + public static class ModuleInitializer + { + [ModuleInitializer] + public static void Initialize() + { +#if !NET8_0 + VerifierSettings.UniqueForTargetFrameworkAndVersion(); +#endif + } + } +} \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/NameSyntaxTests.QualifiedNameSyntaxTest.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NameSyntaxTests.QualifiedNameSyntaxTest.DotNet9_0.verified.txt new file mode 100644 index 0000000..874f496 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NameSyntaxTests.QualifiedNameSyntaxTest.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT 7 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/IngoreNullConditionalRewriteTests.ComplexMemberExpression.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/IngoreNullConditionalRewriteTests.ComplexMemberExpression.DotNet9_0.verified.txt new file mode 100644 index 0000000..ba1f2c1 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/IngoreNullConditionalRewriteTests.ComplexMemberExpression.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT CAST(LEN([e].[Name]) AS int) +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/IngoreNullConditionalRewriteTests.RelationalExpression.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/IngoreNullConditionalRewriteTests.RelationalExpression.DotNet9_0.verified.txt new file mode 100644 index 0000000..ebb4e47 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/IngoreNullConditionalRewriteTests.RelationalExpression.DotNet9_0.verified.txt @@ -0,0 +1,10 @@ +SELECT [e2].[Id], [e2].[EntityId], [e2].[Name] +FROM [Entity] AS [e] +LEFT JOIN ( + SELECT [e1].[Id], [e1].[EntityId], [e1].[Name] + FROM ( + SELECT [e0].[Id], [e0].[EntityId], [e0].[Name], ROW_NUMBER() OVER(PARTITION BY [e0].[EntityId] ORDER BY [e0].[Id]) AS [row] + FROM [Entity] AS [e0] + ) AS [e1] + WHERE 0 < [e1].[row] AND [e1].[row] <= 1 +) AS [e2] ON [e].[Id] = [e2].[EntityId] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/IngoreNullConditionalRewriteTests.SimpleMemberExpression.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/IngoreNullConditionalRewriteTests.SimpleMemberExpression.DotNet9_0.verified.txt new file mode 100644 index 0000000..36503d4 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/IngoreNullConditionalRewriteTests.SimpleMemberExpression.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Name] +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/RewriteNullConditionalRewriteTests.ComplexMemberExpression.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/RewriteNullConditionalRewriteTests.ComplexMemberExpression.DotNet9_0.verified.txt new file mode 100644 index 0000000..ba1f2c1 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/RewriteNullConditionalRewriteTests.ComplexMemberExpression.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT CAST(LEN([e].[Name]) AS int) +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/RewriteNullConditionalRewriteTests.RelationalExpression.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/RewriteNullConditionalRewriteTests.RelationalExpression.DotNet9_0.verified.txt new file mode 100644 index 0000000..a67eecc --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/RewriteNullConditionalRewriteTests.RelationalExpression.DotNet9_0.verified.txt @@ -0,0 +1,12 @@ +SELECT CAST(1 AS bit), [e].[Id], [e0].[Id], [e0].[EntityId], [e0].[Name], [e3].[Id], [e3].[EntityId], [e3].[Name] +FROM [Entity] AS [e] +LEFT JOIN [Entity] AS [e0] ON [e].[Id] = [e0].[EntityId] +LEFT JOIN ( + SELECT [e2].[Id], [e2].[EntityId], [e2].[Name] + FROM ( + SELECT [e1].[Id], [e1].[EntityId], [e1].[Name], ROW_NUMBER() OVER(PARTITION BY [e1].[EntityId] ORDER BY [e1].[Id]) AS [row] + FROM [Entity] AS [e1] + ) AS [e2] + WHERE 0 < [e2].[row] AND [e2].[row] <= 1 +) AS [e3] ON [e].[Id] = [e3].[EntityId] +ORDER BY [e].[Id] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/RewriteNullConditionalRewriteTests.SimpleMemberExpression.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/RewriteNullConditionalRewriteTests.SimpleMemberExpression.DotNet9_0.verified.txt new file mode 100644 index 0000000..36503d4 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/NullConditionals/RewriteNullConditionalRewriteTests.SimpleMemberExpression.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Name] +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/PrivateProjectables.Issue63Repro.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/PrivateProjectables.Issue63Repro.DotNet9_0.verified.txt new file mode 100644 index 0000000..b1c3b32 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/PrivateProjectables.Issue63Repro.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.EntityRootSubqueryExpression.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.EntityRootSubqueryExpression.DotNet9_0.verified.txt new file mode 100644 index 0000000..75b71ad --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.EntityRootSubqueryExpression.DotNet9_0.verified.txt @@ -0,0 +1,6 @@ +SELECT [e].[Id], ( + SELECT COUNT(*) + FROM [Entity] AS [e0] + WHERE [e0].[Id] * 5 = 5) AS [TotalCount] +FROM [Entity] AS [e] +WHERE [e].[Id] * 5 = 5 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.EntityRootSubqueryExpression.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.EntityRootSubqueryExpression.verified.txt new file mode 100644 index 0000000..75b71ad --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.EntityRootSubqueryExpression.verified.txt @@ -0,0 +1,6 @@ +SELECT [e].[Id], ( + SELECT COUNT(*) + FROM [Entity] AS [e0] + WHERE [e0].[Id] * 5 = 5) AS [TotalCount] +FROM [Entity] AS [e] +WHERE [e].[Id] * 5 = 5 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.UseMemberPropertyQueryRootExpression.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.UseMemberPropertyQueryRootExpression.DotNet9_0.verified.txt new file mode 100644 index 0000000..3b8b9ae --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.UseMemberPropertyQueryRootExpression.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id], [e].[Id] * 5 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.cs b/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.cs index bef2283..3baadfd 100644 --- a/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.cs +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/QueryRootTests.cs @@ -1,9 +1,6 @@ using System.ComponentModel.DataAnnotations.Schema; -using System.Threading.Tasks; using EntityFrameworkCore.Projectables.FunctionalTests.Helpers; using Microsoft.EntityFrameworkCore; -using VerifyXunit; -using Xunit; namespace EntityFrameworkCore.Projectables.FunctionalTests { @@ -35,5 +32,20 @@ public Task UseMemberPropertyQueryRootExpression() return Verifier.Verify(query.ToQueryString()); } + + + [Fact] + public Task EntityRootSubqueryExpression() + { + using var dbContext = new SampleDbContext(); + + var original = dbContext.Set() + .Where(e => e.ComputedWithBacking == 5); + + var query = original + .Select(e => new { Item = e, TotalCount = original.Count() }); + + return Verifier.Verify(query.ToQueryString()); + } } } diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullComplexFunctionTests.FilterOnProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullComplexFunctionTests.FilterOnProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..d4ddd00 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullComplexFunctionTests.FilterOnProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,3 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] +WHERE [e].[Id] + 1 = 2 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullComplexFunctionTests.PassInReferenceArguments.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullComplexFunctionTests.PassInReferenceArguments.DotNet9_0.verified.txt new file mode 100644 index 0000000..f85a6fa --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullComplexFunctionTests.PassInReferenceArguments.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] + [e].[Id] +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullComplexFunctionTests.PassInVariableArguments.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullComplexFunctionTests.PassInVariableArguments.DotNet9_0.verified.txt new file mode 100644 index 0000000..2a7d907 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullComplexFunctionTests.PassInVariableArguments.DotNet9_0.verified.txt @@ -0,0 +1,4 @@ +DECLARE @__argument_0 int = 1; + +SELECT [e].[Id] + @__argument_0 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullComplexFunctionTests.SelectProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullComplexFunctionTests.SelectProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..5cc0e40 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullComplexFunctionTests.SelectProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] + 1 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.CombineSelectProjectableProperties.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.CombineSelectProjectableProperties.DotNet9_0.verified.txt new file mode 100644 index 0000000..c89d0e6 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.CombineSelectProjectableProperties.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] + [e].[Id] * 2 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnComplexProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnComplexProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..6c95f6a --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnComplexProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,3 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] +WHERE [e].[Id] * 2 = 2 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..291fcb8 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.FilterOnProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,3 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] +WHERE [e].[Id] = 1 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectComplexProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectComplexProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..a3cb54d --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectComplexProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] * 2 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..b1c3b32 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullPropertyTests.SelectProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.CombineSelectProjectableProperties.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.CombineSelectProjectableProperties.DotNet9_0.verified.txt new file mode 100644 index 0000000..c89d0e6 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.CombineSelectProjectableProperties.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] + [e].[Id] * 2 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.FilterOnComplexProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.FilterOnComplexProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..6c95f6a --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.FilterOnComplexProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,3 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] +WHERE [e].[Id] * 2 = 2 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.FilterOnProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.FilterOnProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..291fcb8 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.FilterOnProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,3 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] +WHERE [e].[Id] = 1 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.SelectComplexProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.SelectComplexProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..a3cb54d --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.SelectComplexProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] * 2 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.SelectProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.SelectProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..b1c3b32 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatefullSimpleFunctionTests.SelectProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessComplexFunctionTests.FilterOnProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessComplexFunctionTests.FilterOnProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..414107b --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessComplexFunctionTests.FilterOnProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,3 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] +WHERE 0 = 1 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessComplexFunctionTests.PassInVariableArguments.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessComplexFunctionTests.PassInVariableArguments.DotNet9_0.verified.txt new file mode 100644 index 0000000..bd6408a --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessComplexFunctionTests.PassInVariableArguments.DotNet9_0.verified.txt @@ -0,0 +1,4 @@ +DECLARE @__argument_0 int = 1; + +SELECT @__argument_0 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessComplexFunctionTests.SelectProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessComplexFunctionTests.SelectProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..6e1334a --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessComplexFunctionTests.SelectProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT 0 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessSimpleFunctionTests.FilterOnProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessSimpleFunctionTests.FilterOnProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..414107b --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessSimpleFunctionTests.FilterOnProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,3 @@ +SELECT [e].[Id] +FROM [Entity] AS [e] +WHERE 0 = 1 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessSimpleFunctionTests.SelectProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessSimpleFunctionTests.SelectProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..6e1334a --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StatelessSimpleFunctionTests.SelectProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT 0 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/StaticMembersTests.FilterOnProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StaticMembersTests.FilterOnProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..0b1b60a --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/StaticMembersTests.FilterOnProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,3 @@ +SELECT [e].[Id], [e].[Price] +FROM [Entity] AS [e] +WHERE [e].[Price] > 1.0E0 \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/TypeNameQualificationTests.SelectProjectableProperty.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/TypeNameQualificationTests.SelectProjectableProperty.DotNet9_0.verified.txt new file mode 100644 index 0000000..9eb7350 --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/TypeNameQualificationTests.SelectProjectableProperty.DotNet9_0.verified.txt @@ -0,0 +1,10 @@ +SELECT [e2].[Id], [e2].[EntityId], [e2].[ParentId] +FROM [Entity] AS [e] +LEFT JOIN ( + SELECT [e1].[Id], [e1].[EntityId], [e1].[ParentId] + FROM ( + SELECT [e0].[Id], [e0].[EntityId], [e0].[ParentId], ROW_NUMBER() OVER(PARTITION BY [e0].[EntityId] ORDER BY [e0].[Id]) AS [row] + FROM [Entity] AS [e0] + ) AS [e1] + WHERE [e1].[row] <= 1 +) AS [e2] ON [e].[Id] = [e2].[EntityId] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/UseMemberBodyPropertyTests.UseMemberPropertyExpression.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/UseMemberBodyPropertyTests.UseMemberPropertyExpression.DotNet9_0.verified.txt new file mode 100644 index 0000000..a7fa9cd --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/UseMemberBodyPropertyTests.UseMemberPropertyExpression.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] * 3 +FROM [Entity] AS [e] \ No newline at end of file diff --git a/tests/EntityFrameworkCore.Projectables.FunctionalTests/UseMemberBodyPropertyTests.UseMemberPropertyGenerated.DotNet9_0.verified.txt b/tests/EntityFrameworkCore.Projectables.FunctionalTests/UseMemberBodyPropertyTests.UseMemberPropertyGenerated.DotNet9_0.verified.txt new file mode 100644 index 0000000..a3cb54d --- /dev/null +++ b/tests/EntityFrameworkCore.Projectables.FunctionalTests/UseMemberBodyPropertyTests.UseMemberPropertyGenerated.DotNet9_0.verified.txt @@ -0,0 +1,2 @@ +SELECT [e].[Id] * 2 +FROM [Entity] AS [e] \ No newline at end of file