From 6b02afcef3818742f61871f5fb7f636cd925ce06 Mon Sep 17 00:00:00 2001 From: Koen Date: Mon, 19 Aug 2024 00:31:22 +0100 Subject: [PATCH] Derived from QueryCompiler base class --- .../Internal/CustomQueryCompiler.cs | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/EntityFrameworkCore.Projectables/Infrastructure/Internal/CustomQueryCompiler.cs b/src/EntityFrameworkCore.Projectables/Infrastructure/Internal/CustomQueryCompiler.cs index 2a85c9c..5f66799 100644 --- a/src/EntityFrameworkCore.Projectables/Infrastructure/Internal/CustomQueryCompiler.cs +++ b/src/EntityFrameworkCore.Projectables/Infrastructure/Internal/CustomQueryCompiler.cs @@ -7,30 +7,38 @@ using System.Threading.Tasks; using System.Transactions; using EntityFrameworkCore.Projectables.Services; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Diagnostics; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Query; using Microsoft.EntityFrameworkCore.Query.Internal; +using Microsoft.EntityFrameworkCore.Storage; namespace EntityFrameworkCore.Projectables.Infrastructure.Internal { + /// + /// Foo + /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "EF1001:Internal EF Core API usage.", Justification = "Needed")] - public sealed class CustomQueryCompiler : IQueryCompiler + public sealed class CustomQueryCompiler : QueryCompiler { readonly IQueryCompiler _decoratedQueryCompiler; readonly ProjectableExpressionReplacer _projectableExpressionReplacer; - public CustomQueryCompiler(IQueryCompiler decoratedQueryCompiler) + public CustomQueryCompiler(IQueryCompiler decoratedQueryCompiler, IQueryContextFactory queryContextFactory, ICompiledQueryCache compiledQueryCache, ICompiledQueryCacheKeyGenerator compiledQueryCacheKeyGenerator, IDatabase database, IDiagnosticsLogger logger, ICurrentDbContext currentContext, IEvaluatableExpressionFilter evaluatableExpressionFilter, IModel model) : base(queryContextFactory, compiledQueryCache, compiledQueryCacheKeyGenerator, database, logger, currentContext, evaluatableExpressionFilter, model) { _decoratedQueryCompiler = decoratedQueryCompiler; _projectableExpressionReplacer = new ProjectableExpressionReplacer(new ProjectionExpressionResolver()); } - public Func CreateCompiledAsyncQuery(Expression query) + public override Func CreateCompiledAsyncQuery(Expression query) => _decoratedQueryCompiler.CreateCompiledAsyncQuery(Expand(query)); - public Func CreateCompiledQuery(Expression query) + public override Func CreateCompiledQuery(Expression query) => _decoratedQueryCompiler.CreateCompiledQuery(Expand(query)); - public TResult Execute(Expression query) + public override TResult Execute(Expression query) => _decoratedQueryCompiler.Execute(Expand(query)); - public TResult ExecuteAsync(Expression query, CancellationToken cancellationToken) + public override TResult ExecuteAsync(Expression query, CancellationToken cancellationToken) => _decoratedQueryCompiler.ExecuteAsync(Expand(query), cancellationToken); Expression Expand(Expression expression)