Class RelationalQueryableMethodTranslatingExpressionVisitor
- Namespace
- Microsoft.EntityFrameworkCore.Query
- Assembly
- Microsoft.EntityFrameworkCore.Relational.dll
public class RelationalQueryableMethodTranslatingExpressionVisitor : QueryableMethodTranslatingExpressionVisitor
- Inheritance
-
RelationalQueryableMethodTranslatingExpressionVisitor
Constructors
RelationalQueryableMethodTranslatingExpressionVisitor(QueryableMethodTranslatingExpressionVisitorDependencies, RelationalQueryableMethodTranslatingExpressionVisitorDependencies, QueryCompilationContext)
Creates a new instance of the Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor class.
public RelationalQueryableMethodTranslatingExpressionVisitor(QueryableMethodTranslatingExpressionVisitorDependencies dependencies, RelationalQueryableMethodTranslatingExpressionVisitorDependencies relationalDependencies, QueryCompilationContext queryCompilationContext)
Parameters
dependenciesQueryableMethodTranslatingExpressionVisitorDependenciesParameter object containing dependencies for this class.
relationalDependenciesRelationalQueryableMethodTranslatingExpressionVisitorDependenciesParameter object containing relational dependencies for this class.
queryCompilationContextQueryCompilationContextThe query compilation context object to use.
RelationalQueryableMethodTranslatingExpressionVisitor(RelationalQueryableMethodTranslatingExpressionVisitor)
Creates a new instance of the Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor class.
protected RelationalQueryableMethodTranslatingExpressionVisitor(RelationalQueryableMethodTranslatingExpressionVisitor parentVisitor)
Parameters
parentVisitorRelationalQueryableMethodTranslatingExpressionVisitorA parent visitor to create subquery visitor for.
Properties
RelationalDependencies
Relational provider-specific dependencies for this service.
protected virtual RelationalQueryableMethodTranslatingExpressionVisitorDependencies RelationalDependencies { get; }
Property Value
Methods
CreateShapedQueryExpression(IEntityType)
protected override ShapedQueryExpression CreateShapedQueryExpression(IEntityType entityType)
Parameters
entityTypeIEntityType
Returns
- ShapedQueryExpression
CreateSubqueryVisitor()
protected override QueryableMethodTranslatingExpressionVisitor CreateSubqueryVisitor()
Returns
- QueryableMethodTranslatingExpressionVisitor
IsValidSelectExpressionForExecuteDelete(SelectExpression, EntityShaperExpression, out TableExpression?)
Checks weather the current select expression can be used as-is for execute a delete operation, or whether it must be pushed down into a subquery.
protected virtual bool IsValidSelectExpressionForExecuteDelete(SelectExpression selectExpression, EntityShaperExpression entityShaperExpression, out TableExpression? tableExpression)
Parameters
selectExpressionSelectExpressionThe select expression to validate.
entityShaperExpressionEntityShaperExpressionThe entity shaper expression on which the delete operation is being applied.
tableExpressionTableExpressionThe table expression from which rows are being deleted.
Returns
Remarks
By default, only single-table select expressions are supported, and optionally with a predicate.
Providers can override this to allow more select expression features to be supported without pushing down into a subquery. When doing this, VisitDelete must also be overridden in the provider's QuerySqlGenerator to add SQL generation support for the feature.
IsValidSelectExpressionForExecuteUpdate(SelectExpression, EntityShaperExpression, out TableExpression?)
Validates if the current select expression can be used for execute update operation or it requires to be joined as a subquery.
protected virtual bool IsValidSelectExpressionForExecuteUpdate(SelectExpression selectExpression, EntityShaperExpression entityShaperExpression, out TableExpression? tableExpression)
Parameters
selectExpressionSelectExpressionThe select expression to validate.
entityShaperExpressionEntityShaperExpressionThe entity shaper expression on which the update operation is being applied.
tableExpressionTableExpressionThe table expression from which rows are being deleted.
Returns
Remarks
By default, only muli-table select expressions are supported, and optionally with a predicate.
Providers can override this to allow more select expression features to be supported without pushing down into a subquery. When doing this, VisitUpdate must also be overridden in the provider's QuerySqlGenerator to add SQL generation support for the feature.
TranslateAll(ShapedQueryExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateAll(ShapedQueryExpression source, LambdaExpression predicate)
Parameters
sourceShapedQueryExpressionpredicateLambdaExpression
Returns
- ShapedQueryExpression
TranslateAny(ShapedQueryExpression, LambdaExpression?)
protected override ShapedQueryExpression? TranslateAny(ShapedQueryExpression source, LambdaExpression? predicate)
Parameters
sourceShapedQueryExpressionpredicateLambdaExpression
Returns
- ShapedQueryExpression
TranslateAverage(ShapedQueryExpression, LambdaExpression?, Type)
protected override ShapedQueryExpression? TranslateAverage(ShapedQueryExpression source, LambdaExpression? selector, Type resultType)
Parameters
sourceShapedQueryExpressionselectorLambdaExpressionresultTypeType
Returns
- ShapedQueryExpression
TranslateCast(ShapedQueryExpression, Type)
protected override ShapedQueryExpression? TranslateCast(ShapedQueryExpression source, Type resultType)
Parameters
sourceShapedQueryExpressionresultTypeType
Returns
- ShapedQueryExpression
TranslateConcat(ShapedQueryExpression, ShapedQueryExpression)
protected override ShapedQueryExpression? TranslateConcat(ShapedQueryExpression source1, ShapedQueryExpression source2)
Parameters
source1ShapedQueryExpressionsource2ShapedQueryExpression
Returns
- ShapedQueryExpression
TranslateContains(ShapedQueryExpression, Expression)
protected override ShapedQueryExpression? TranslateContains(ShapedQueryExpression source, Expression item)
Parameters
sourceShapedQueryExpressionitemExpression
Returns
- ShapedQueryExpression
TranslateCount(ShapedQueryExpression, LambdaExpression?)
protected override ShapedQueryExpression? TranslateCount(ShapedQueryExpression source, LambdaExpression? predicate)
Parameters
sourceShapedQueryExpressionpredicateLambdaExpression
Returns
- ShapedQueryExpression
TranslateDefaultIfEmpty(ShapedQueryExpression, Expression?)
protected override ShapedQueryExpression? TranslateDefaultIfEmpty(ShapedQueryExpression source, Expression? defaultValue)
Parameters
sourceShapedQueryExpressiondefaultValueExpression
Returns
- ShapedQueryExpression
TranslateDistinct(ShapedQueryExpression)
protected override ShapedQueryExpression? TranslateDistinct(ShapedQueryExpression source)
Parameters
sourceShapedQueryExpression
Returns
- ShapedQueryExpression
TranslateElementAtOrDefault(ShapedQueryExpression, Expression, bool)
protected override ShapedQueryExpression? TranslateElementAtOrDefault(ShapedQueryExpression source, Expression index, bool returnDefault)
Parameters
sourceShapedQueryExpressionindexExpressionreturnDefaultbool
Returns
- ShapedQueryExpression
TranslateExcept(ShapedQueryExpression, ShapedQueryExpression)
protected override ShapedQueryExpression? TranslateExcept(ShapedQueryExpression source1, ShapedQueryExpression source2)
Parameters
source1ShapedQueryExpressionsource2ShapedQueryExpression
Returns
- ShapedQueryExpression
TranslateExecuteDelete(ShapedQueryExpression)
Translates ExecuteDelete<TSource>(IQueryable<TSource>) method over the given source.
protected virtual NonQueryExpression? TranslateExecuteDelete(ShapedQueryExpression source)
Parameters
sourceShapedQueryExpressionThe shaped query on which the operator is applied.
Returns
- NonQueryExpression
The non query after translation.
TranslateExecuteUpdate(ShapedQueryExpression, LambdaExpression)
Translates ExecuteUpdate<TSource>(IQueryable<TSource>, Expression<Func<SetPropertyCalls<TSource>, SetPropertyCalls<TSource>>>) method over the given source.
protected virtual NonQueryExpression? TranslateExecuteUpdate(ShapedQueryExpression source, LambdaExpression setPropertyCalls)
Parameters
sourceShapedQueryExpressionThe shaped query on which the operator is applied.
setPropertyCallsLambdaExpressionThe lambda expression containing SetProperty<TProperty>(Func<TSource, TProperty>, Func<TSource, TProperty>) statements.
Returns
- NonQueryExpression
The non query after translation.
TranslateExpression(Expression)
Translates the given expression into equivalent SQL representation.
protected virtual SqlExpression? TranslateExpression(Expression expression)
Parameters
expressionExpressionAn expression to translate.
Returns
- SqlExpression
A SqlExpression which is translation of given expression or null.
TranslateFirstOrDefault(ShapedQueryExpression, LambdaExpression?, Type, bool)
protected override ShapedQueryExpression? TranslateFirstOrDefault(ShapedQueryExpression source, LambdaExpression? predicate, Type returnType, bool returnDefault)
Parameters
sourceShapedQueryExpressionpredicateLambdaExpressionreturnTypeTypereturnDefaultbool
Returns
- ShapedQueryExpression
TranslateGroupBy(ShapedQueryExpression, LambdaExpression, LambdaExpression?, LambdaExpression?)
protected override ShapedQueryExpression? TranslateGroupBy(ShapedQueryExpression source, LambdaExpression keySelector, LambdaExpression? elementSelector, LambdaExpression? resultSelector)
Parameters
sourceShapedQueryExpressionkeySelectorLambdaExpressionelementSelectorLambdaExpressionresultSelectorLambdaExpression
Returns
- ShapedQueryExpression
TranslateGroupJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateGroupJoin(ShapedQueryExpression outer, ShapedQueryExpression inner, LambdaExpression outerKeySelector, LambdaExpression innerKeySelector, LambdaExpression resultSelector)
Parameters
outerShapedQueryExpressioninnerShapedQueryExpressionouterKeySelectorLambdaExpressioninnerKeySelectorLambdaExpressionresultSelectorLambdaExpression
Returns
- ShapedQueryExpression
TranslateIntersect(ShapedQueryExpression, ShapedQueryExpression)
protected override ShapedQueryExpression? TranslateIntersect(ShapedQueryExpression source1, ShapedQueryExpression source2)
Parameters
source1ShapedQueryExpressionsource2ShapedQueryExpression
Returns
- ShapedQueryExpression
TranslateJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateJoin(ShapedQueryExpression outer, ShapedQueryExpression inner, LambdaExpression outerKeySelector, LambdaExpression innerKeySelector, LambdaExpression resultSelector)
Parameters
outerShapedQueryExpressioninnerShapedQueryExpressionouterKeySelectorLambdaExpressioninnerKeySelectorLambdaExpressionresultSelectorLambdaExpression
Returns
- ShapedQueryExpression
TranslateLambdaExpression(ShapedQueryExpression, LambdaExpression)
Translates the given lambda expression for the Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression source into equivalent SQL representation.
protected virtual SqlExpression? TranslateLambdaExpression(ShapedQueryExpression shapedQueryExpression, LambdaExpression lambdaExpression)
Parameters
shapedQueryExpressionShapedQueryExpressionA Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression on which the lambda expression is being applied.
lambdaExpressionLambdaExpressionA LambdaExpression to translate into SQL.
Returns
- SqlExpression
A SqlExpression which is translation of given lambda expression or null.
TranslateLastOrDefault(ShapedQueryExpression, LambdaExpression?, Type, bool)
protected override ShapedQueryExpression? TranslateLastOrDefault(ShapedQueryExpression source, LambdaExpression? predicate, Type returnType, bool returnDefault)
Parameters
sourceShapedQueryExpressionpredicateLambdaExpressionreturnTypeTypereturnDefaultbool
Returns
- ShapedQueryExpression
TranslateLeftJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateLeftJoin(ShapedQueryExpression outer, ShapedQueryExpression inner, LambdaExpression outerKeySelector, LambdaExpression innerKeySelector, LambdaExpression resultSelector)
Parameters
outerShapedQueryExpressioninnerShapedQueryExpressionouterKeySelectorLambdaExpressioninnerKeySelectorLambdaExpressionresultSelectorLambdaExpression
Returns
- ShapedQueryExpression
TranslateLongCount(ShapedQueryExpression, LambdaExpression?)
protected override ShapedQueryExpression? TranslateLongCount(ShapedQueryExpression source, LambdaExpression? predicate)
Parameters
sourceShapedQueryExpressionpredicateLambdaExpression
Returns
- ShapedQueryExpression
TranslateMax(ShapedQueryExpression, LambdaExpression?, Type)
protected override ShapedQueryExpression? TranslateMax(ShapedQueryExpression source, LambdaExpression? selector, Type resultType)
Parameters
sourceShapedQueryExpressionselectorLambdaExpressionresultTypeType
Returns
- ShapedQueryExpression
TranslateMin(ShapedQueryExpression, LambdaExpression?, Type)
protected override ShapedQueryExpression? TranslateMin(ShapedQueryExpression source, LambdaExpression? selector, Type resultType)
Parameters
sourceShapedQueryExpressionselectorLambdaExpressionresultTypeType
Returns
- ShapedQueryExpression
TranslateOfType(ShapedQueryExpression, Type)
protected override ShapedQueryExpression? TranslateOfType(ShapedQueryExpression source, Type resultType)
Parameters
sourceShapedQueryExpressionresultTypeType
Returns
- ShapedQueryExpression
TranslateOrderBy(ShapedQueryExpression, LambdaExpression, bool)
protected override ShapedQueryExpression? TranslateOrderBy(ShapedQueryExpression source, LambdaExpression keySelector, bool ascending)
Parameters
sourceShapedQueryExpressionkeySelectorLambdaExpressionascendingbool
Returns
- ShapedQueryExpression
TranslateReverse(ShapedQueryExpression)
protected override ShapedQueryExpression? TranslateReverse(ShapedQueryExpression source)
Parameters
sourceShapedQueryExpression
Returns
- ShapedQueryExpression
TranslateSelect(ShapedQueryExpression, LambdaExpression)
protected override ShapedQueryExpression TranslateSelect(ShapedQueryExpression source, LambdaExpression selector)
Parameters
sourceShapedQueryExpressionselectorLambdaExpression
Returns
- ShapedQueryExpression
TranslateSelectMany(ShapedQueryExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateSelectMany(ShapedQueryExpression source, LambdaExpression selector)
Parameters
sourceShapedQueryExpressionselectorLambdaExpression
Returns
- ShapedQueryExpression
TranslateSelectMany(ShapedQueryExpression, LambdaExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateSelectMany(ShapedQueryExpression source, LambdaExpression collectionSelector, LambdaExpression resultSelector)
Parameters
sourceShapedQueryExpressioncollectionSelectorLambdaExpressionresultSelectorLambdaExpression
Returns
- ShapedQueryExpression
TranslateSingleOrDefault(ShapedQueryExpression, LambdaExpression?, Type, bool)
protected override ShapedQueryExpression? TranslateSingleOrDefault(ShapedQueryExpression source, LambdaExpression? predicate, Type returnType, bool returnDefault)
Parameters
sourceShapedQueryExpressionpredicateLambdaExpressionreturnTypeTypereturnDefaultbool
Returns
- ShapedQueryExpression
TranslateSkip(ShapedQueryExpression, Expression)
protected override ShapedQueryExpression? TranslateSkip(ShapedQueryExpression source, Expression count)
Parameters
sourceShapedQueryExpressioncountExpression
Returns
- ShapedQueryExpression
TranslateSkipWhile(ShapedQueryExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateSkipWhile(ShapedQueryExpression source, LambdaExpression predicate)
Parameters
sourceShapedQueryExpressionpredicateLambdaExpression
Returns
- ShapedQueryExpression
TranslateSum(ShapedQueryExpression, LambdaExpression?, Type)
protected override ShapedQueryExpression? TranslateSum(ShapedQueryExpression source, LambdaExpression? selector, Type resultType)
Parameters
sourceShapedQueryExpressionselectorLambdaExpressionresultTypeType
Returns
- ShapedQueryExpression
TranslateTake(ShapedQueryExpression, Expression)
protected override ShapedQueryExpression? TranslateTake(ShapedQueryExpression source, Expression count)
Parameters
sourceShapedQueryExpressioncountExpression
Returns
- ShapedQueryExpression
TranslateTakeWhile(ShapedQueryExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateTakeWhile(ShapedQueryExpression source, LambdaExpression predicate)
Parameters
sourceShapedQueryExpressionpredicateLambdaExpression
Returns
- ShapedQueryExpression
TranslateThenBy(ShapedQueryExpression, LambdaExpression, bool)
protected override ShapedQueryExpression? TranslateThenBy(ShapedQueryExpression source, LambdaExpression keySelector, bool ascending)
Parameters
sourceShapedQueryExpressionkeySelectorLambdaExpressionascendingbool
Returns
- ShapedQueryExpression
TranslateUnion(ShapedQueryExpression, ShapedQueryExpression)
protected override ShapedQueryExpression? TranslateUnion(ShapedQueryExpression source1, ShapedQueryExpression source2)
Parameters
source1ShapedQueryExpressionsource2ShapedQueryExpression
Returns
- ShapedQueryExpression
TranslateWhere(ShapedQueryExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateWhere(ShapedQueryExpression source, LambdaExpression predicate)
Parameters
sourceShapedQueryExpressionpredicateLambdaExpression
Returns
- ShapedQueryExpression
VisitExtension(Expression)
protected override Expression VisitExtension(Expression extensionExpression)
Parameters
extensionExpressionExpression
Returns
VisitMethodCall(MethodCallExpression)
protected override Expression VisitMethodCall(MethodCallExpression methodCallExpression)
Parameters
methodCallExpressionMethodCallExpression