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
dependencies
QueryableMethodTranslatingExpressionVisitorDependenciesParameter object containing dependencies for this class.
relationalDependencies
RelationalQueryableMethodTranslatingExpressionVisitorDependenciesParameter object containing relational dependencies for this class.
queryCompilationContext
QueryCompilationContextThe query compilation context object to use.
RelationalQueryableMethodTranslatingExpressionVisitor(RelationalQueryableMethodTranslatingExpressionVisitor)
Creates a new instance of the Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor class.
protected RelationalQueryableMethodTranslatingExpressionVisitor(RelationalQueryableMethodTranslatingExpressionVisitor parentVisitor)
Parameters
parentVisitor
RelationalQueryableMethodTranslatingExpressionVisitorA 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
entityType
IEntityType
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
selectExpression
SelectExpressionThe select expression to validate.
entityShaperExpression
EntityShaperExpressionThe entity shaper expression on which the delete operation is being applied.
tableExpression
TableExpressionThe 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
selectExpression
SelectExpressionThe select expression to validate.
entityShaperExpression
EntityShaperExpressionThe entity shaper expression on which the update operation is being applied.
tableExpression
TableExpressionThe 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
source
ShapedQueryExpressionpredicate
LambdaExpression
Returns
- ShapedQueryExpression
TranslateAny(ShapedQueryExpression, LambdaExpression?)
protected override ShapedQueryExpression? TranslateAny(ShapedQueryExpression source, LambdaExpression? predicate)
Parameters
source
ShapedQueryExpressionpredicate
LambdaExpression
Returns
- ShapedQueryExpression
TranslateAverage(ShapedQueryExpression, LambdaExpression?, Type)
protected override ShapedQueryExpression? TranslateAverage(ShapedQueryExpression source, LambdaExpression? selector, Type resultType)
Parameters
source
ShapedQueryExpressionselector
LambdaExpressionresultType
Type
Returns
- ShapedQueryExpression
TranslateCast(ShapedQueryExpression, Type)
protected override ShapedQueryExpression? TranslateCast(ShapedQueryExpression source, Type resultType)
Parameters
source
ShapedQueryExpressionresultType
Type
Returns
- ShapedQueryExpression
TranslateConcat(ShapedQueryExpression, ShapedQueryExpression)
protected override ShapedQueryExpression? TranslateConcat(ShapedQueryExpression source1, ShapedQueryExpression source2)
Parameters
source1
ShapedQueryExpressionsource2
ShapedQueryExpression
Returns
- ShapedQueryExpression
TranslateContains(ShapedQueryExpression, Expression)
protected override ShapedQueryExpression? TranslateContains(ShapedQueryExpression source, Expression item)
Parameters
source
ShapedQueryExpressionitem
Expression
Returns
- ShapedQueryExpression
TranslateCount(ShapedQueryExpression, LambdaExpression?)
protected override ShapedQueryExpression? TranslateCount(ShapedQueryExpression source, LambdaExpression? predicate)
Parameters
source
ShapedQueryExpressionpredicate
LambdaExpression
Returns
- ShapedQueryExpression
TranslateDefaultIfEmpty(ShapedQueryExpression, Expression?)
protected override ShapedQueryExpression? TranslateDefaultIfEmpty(ShapedQueryExpression source, Expression? defaultValue)
Parameters
source
ShapedQueryExpressiondefaultValue
Expression
Returns
- ShapedQueryExpression
TranslateDistinct(ShapedQueryExpression)
protected override ShapedQueryExpression? TranslateDistinct(ShapedQueryExpression source)
Parameters
source
ShapedQueryExpression
Returns
- ShapedQueryExpression
TranslateElementAtOrDefault(ShapedQueryExpression, Expression, bool)
protected override ShapedQueryExpression? TranslateElementAtOrDefault(ShapedQueryExpression source, Expression index, bool returnDefault)
Parameters
source
ShapedQueryExpressionindex
ExpressionreturnDefault
bool
Returns
- ShapedQueryExpression
TranslateExcept(ShapedQueryExpression, ShapedQueryExpression)
protected override ShapedQueryExpression? TranslateExcept(ShapedQueryExpression source1, ShapedQueryExpression source2)
Parameters
source1
ShapedQueryExpressionsource2
ShapedQueryExpression
Returns
- ShapedQueryExpression
TranslateExecuteDelete(ShapedQueryExpression)
Translates ExecuteDelete<TSource>(IQueryable<TSource>) method over the given source.
protected virtual NonQueryExpression? TranslateExecuteDelete(ShapedQueryExpression source)
Parameters
source
ShapedQueryExpressionThe 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
source
ShapedQueryExpressionThe shaped query on which the operator is applied.
setPropertyCalls
LambdaExpressionThe 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
expression
ExpressionAn 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
source
ShapedQueryExpressionpredicate
LambdaExpressionreturnType
TypereturnDefault
bool
Returns
- ShapedQueryExpression
TranslateGroupBy(ShapedQueryExpression, LambdaExpression, LambdaExpression?, LambdaExpression?)
protected override ShapedQueryExpression? TranslateGroupBy(ShapedQueryExpression source, LambdaExpression keySelector, LambdaExpression? elementSelector, LambdaExpression? resultSelector)
Parameters
source
ShapedQueryExpressionkeySelector
LambdaExpressionelementSelector
LambdaExpressionresultSelector
LambdaExpression
Returns
- ShapedQueryExpression
TranslateGroupJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateGroupJoin(ShapedQueryExpression outer, ShapedQueryExpression inner, LambdaExpression outerKeySelector, LambdaExpression innerKeySelector, LambdaExpression resultSelector)
Parameters
outer
ShapedQueryExpressioninner
ShapedQueryExpressionouterKeySelector
LambdaExpressioninnerKeySelector
LambdaExpressionresultSelector
LambdaExpression
Returns
- ShapedQueryExpression
TranslateIntersect(ShapedQueryExpression, ShapedQueryExpression)
protected override ShapedQueryExpression? TranslateIntersect(ShapedQueryExpression source1, ShapedQueryExpression source2)
Parameters
source1
ShapedQueryExpressionsource2
ShapedQueryExpression
Returns
- ShapedQueryExpression
TranslateJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateJoin(ShapedQueryExpression outer, ShapedQueryExpression inner, LambdaExpression outerKeySelector, LambdaExpression innerKeySelector, LambdaExpression resultSelector)
Parameters
outer
ShapedQueryExpressioninner
ShapedQueryExpressionouterKeySelector
LambdaExpressioninnerKeySelector
LambdaExpressionresultSelector
LambdaExpression
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
shapedQueryExpression
ShapedQueryExpressionA Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression on which the lambda expression is being applied.
lambdaExpression
LambdaExpressionA 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
source
ShapedQueryExpressionpredicate
LambdaExpressionreturnType
TypereturnDefault
bool
Returns
- ShapedQueryExpression
TranslateLeftJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateLeftJoin(ShapedQueryExpression outer, ShapedQueryExpression inner, LambdaExpression outerKeySelector, LambdaExpression innerKeySelector, LambdaExpression resultSelector)
Parameters
outer
ShapedQueryExpressioninner
ShapedQueryExpressionouterKeySelector
LambdaExpressioninnerKeySelector
LambdaExpressionresultSelector
LambdaExpression
Returns
- ShapedQueryExpression
TranslateLongCount(ShapedQueryExpression, LambdaExpression?)
protected override ShapedQueryExpression? TranslateLongCount(ShapedQueryExpression source, LambdaExpression? predicate)
Parameters
source
ShapedQueryExpressionpredicate
LambdaExpression
Returns
- ShapedQueryExpression
TranslateMax(ShapedQueryExpression, LambdaExpression?, Type)
protected override ShapedQueryExpression? TranslateMax(ShapedQueryExpression source, LambdaExpression? selector, Type resultType)
Parameters
source
ShapedQueryExpressionselector
LambdaExpressionresultType
Type
Returns
- ShapedQueryExpression
TranslateMin(ShapedQueryExpression, LambdaExpression?, Type)
protected override ShapedQueryExpression? TranslateMin(ShapedQueryExpression source, LambdaExpression? selector, Type resultType)
Parameters
source
ShapedQueryExpressionselector
LambdaExpressionresultType
Type
Returns
- ShapedQueryExpression
TranslateOfType(ShapedQueryExpression, Type)
protected override ShapedQueryExpression? TranslateOfType(ShapedQueryExpression source, Type resultType)
Parameters
source
ShapedQueryExpressionresultType
Type
Returns
- ShapedQueryExpression
TranslateOrderBy(ShapedQueryExpression, LambdaExpression, bool)
protected override ShapedQueryExpression? TranslateOrderBy(ShapedQueryExpression source, LambdaExpression keySelector, bool ascending)
Parameters
source
ShapedQueryExpressionkeySelector
LambdaExpressionascending
bool
Returns
- ShapedQueryExpression
TranslateReverse(ShapedQueryExpression)
protected override ShapedQueryExpression? TranslateReverse(ShapedQueryExpression source)
Parameters
source
ShapedQueryExpression
Returns
- ShapedQueryExpression
TranslateSelect(ShapedQueryExpression, LambdaExpression)
protected override ShapedQueryExpression TranslateSelect(ShapedQueryExpression source, LambdaExpression selector)
Parameters
source
ShapedQueryExpressionselector
LambdaExpression
Returns
- ShapedQueryExpression
TranslateSelectMany(ShapedQueryExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateSelectMany(ShapedQueryExpression source, LambdaExpression selector)
Parameters
source
ShapedQueryExpressionselector
LambdaExpression
Returns
- ShapedQueryExpression
TranslateSelectMany(ShapedQueryExpression, LambdaExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateSelectMany(ShapedQueryExpression source, LambdaExpression collectionSelector, LambdaExpression resultSelector)
Parameters
source
ShapedQueryExpressioncollectionSelector
LambdaExpressionresultSelector
LambdaExpression
Returns
- ShapedQueryExpression
TranslateSingleOrDefault(ShapedQueryExpression, LambdaExpression?, Type, bool)
protected override ShapedQueryExpression? TranslateSingleOrDefault(ShapedQueryExpression source, LambdaExpression? predicate, Type returnType, bool returnDefault)
Parameters
source
ShapedQueryExpressionpredicate
LambdaExpressionreturnType
TypereturnDefault
bool
Returns
- ShapedQueryExpression
TranslateSkip(ShapedQueryExpression, Expression)
protected override ShapedQueryExpression? TranslateSkip(ShapedQueryExpression source, Expression count)
Parameters
source
ShapedQueryExpressioncount
Expression
Returns
- ShapedQueryExpression
TranslateSkipWhile(ShapedQueryExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateSkipWhile(ShapedQueryExpression source, LambdaExpression predicate)
Parameters
source
ShapedQueryExpressionpredicate
LambdaExpression
Returns
- ShapedQueryExpression
TranslateSum(ShapedQueryExpression, LambdaExpression?, Type)
protected override ShapedQueryExpression? TranslateSum(ShapedQueryExpression source, LambdaExpression? selector, Type resultType)
Parameters
source
ShapedQueryExpressionselector
LambdaExpressionresultType
Type
Returns
- ShapedQueryExpression
TranslateTake(ShapedQueryExpression, Expression)
protected override ShapedQueryExpression? TranslateTake(ShapedQueryExpression source, Expression count)
Parameters
source
ShapedQueryExpressioncount
Expression
Returns
- ShapedQueryExpression
TranslateTakeWhile(ShapedQueryExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateTakeWhile(ShapedQueryExpression source, LambdaExpression predicate)
Parameters
source
ShapedQueryExpressionpredicate
LambdaExpression
Returns
- ShapedQueryExpression
TranslateThenBy(ShapedQueryExpression, LambdaExpression, bool)
protected override ShapedQueryExpression? TranslateThenBy(ShapedQueryExpression source, LambdaExpression keySelector, bool ascending)
Parameters
source
ShapedQueryExpressionkeySelector
LambdaExpressionascending
bool
Returns
- ShapedQueryExpression
TranslateUnion(ShapedQueryExpression, ShapedQueryExpression)
protected override ShapedQueryExpression? TranslateUnion(ShapedQueryExpression source1, ShapedQueryExpression source2)
Parameters
source1
ShapedQueryExpressionsource2
ShapedQueryExpression
Returns
- ShapedQueryExpression
TranslateWhere(ShapedQueryExpression, LambdaExpression)
protected override ShapedQueryExpression? TranslateWhere(ShapedQueryExpression source, LambdaExpression predicate)
Parameters
source
ShapedQueryExpressionpredicate
LambdaExpression
Returns
- ShapedQueryExpression
VisitExtension(Expression)
protected override Expression VisitExtension(Expression extensionExpression)
Parameters
extensionExpression
Expression
Returns
VisitMethodCall(MethodCallExpression)
protected override Expression VisitMethodCall(MethodCallExpression methodCallExpression)
Parameters
methodCallExpression
MethodCallExpression