# Class NpgsqlQueryableMethodTranslatingExpressionVisitor

Namespace
  Npgsql.EntityFrameworkCore.PostgreSQL.Query.Internal

Assembly
  Npgsql.EntityFrameworkCore.PostgreSQL.dll

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    public class NpgsqlQueryableMethodTranslatingExpressionVisitor : RelationalQueryableMethodTranslatingExpressionVisitor

Inheritance
  object
  ExpressionVisitor
  QueryableMethodTranslatingExpressionVisitor
  RelationalQueryableMethodTranslatingExpressionVisitor
  NpgsqlQueryableMethodTranslatingExpressionVisitor

Inherited Members
  RelationalQueryableMethodTranslatingExpressionVisitor.ValuesOrderingColumnName
  RelationalQueryableMethodTranslatingExpressionVisitor.ValuesValueColumnName
  RelationalQueryableMethodTranslatingExpressionVisitor.CreateSelect(IEntityType)
  RelationalQueryableMethodTranslatingExpressionVisitor.CreateSelect(JsonQueryExpression, TableExpressionBase, string, Type, RelationalTypeMapping)
  RelationalQueryableMethodTranslatingExpressionVisitor.VisitExtension(Expression)
  RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateMemberAccess(Expression, MemberIdentity)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateParameterQueryRoot(ParameterQueryRootExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateInlineQueryRoot(InlineQueryRootExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.CreateShapedQueryExpression(IEntityType)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateAverage(ShapedQueryExpression, LambdaExpression, Type)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateCast(ShapedQueryExpression, Type)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateDefaultIfEmpty(ShapedQueryExpression, Expression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateDistinct(ShapedQueryExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateExcept(ShapedQueryExpression, ShapedQueryExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateGroupBy(ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateGroupJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateIntersect(ShapedQueryExpression, ShapedQueryExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateLeftJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateRightJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateLastOrDefault(ShapedQueryExpression, LambdaExpression, Type, bool)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateLongCount(ShapedQueryExpression, LambdaExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateMax(ShapedQueryExpression, LambdaExpression, Type)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateMin(ShapedQueryExpression, LambdaExpression, Type)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateOfType(ShapedQueryExpression, Type)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateOrderBy(ShapedQueryExpression, LambdaExpression, bool)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateReverse(ShapedQueryExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateSelect(ShapedQueryExpression, LambdaExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateSelectMany(ShapedQueryExpression, LambdaExpression, LambdaExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateSelectMany(ShapedQueryExpression, LambdaExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateSingleOrDefault(ShapedQueryExpression, LambdaExpression, Type, bool)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateSkipWhile(ShapedQueryExpression, LambdaExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateSum(ShapedQueryExpression, LambdaExpression, Type)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateTakeWhile(ShapedQueryExpression, LambdaExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateThenBy(ShapedQueryExpression, LambdaExpression, bool)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateUnion(ShapedQueryExpression, ShapedQueryExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateExpression(Expression, bool)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateLambdaExpression(ShapedQueryExpression, LambdaExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateExecuteDelete(ShapedQueryExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.IsValidSelectExpressionForExecuteDelete(SelectExpression, StructuralTypeShaperExpression, out TableExpression)
  RelationalQueryableMethodTranslatingExpressionVisitor.TranslateExecuteUpdate(ShapedQueryExpression, IReadOnlyList<QueryableMethodTranslatingExpressionVisitor.ExecuteUpdateSetter>)
  RelationalQueryableMethodTranslatingExpressionVisitor.TryTranslateSetters(ShapedQueryExpression, IReadOnlyList<QueryableMethodTranslatingExpressionVisitor.ExecuteUpdateSetter>, out IReadOnlyList<ColumnValueSetter>, out TableExpressionBase)
  RelationalQueryableMethodTranslatingExpressionVisitor.RelationalDependencies
  QueryableMethodTranslatingExpressionVisitor.Translate(Expression)
  QueryableMethodTranslatingExpressionVisitor.AddTranslationErrorDetails(string)
  QueryableMethodTranslatingExpressionVisitor.VisitMember(MemberExpression)
  QueryableMethodTranslatingExpressionVisitor.MarkShaperNullable(Expression)
  QueryableMethodTranslatingExpressionVisitor.TranslateSubquery(Expression)
  QueryableMethodTranslatingExpressionVisitor.Dependencies
  QueryableMethodTranslatingExpressionVisitor.TranslationErrorDetails
  QueryableMethodTranslatingExpressionVisitor.QueryCompilationContext
  ExpressionVisitor.Visit(ReadOnlyCollection<Expression>)
  ExpressionVisitor.Visit(Expression)
  ExpressionVisitor.VisitAndConvert<T>(ReadOnlyCollection<T>, string)
  ExpressionVisitor.VisitAndConvert<T>(T, string)
  ExpressionVisitor.VisitBinary(BinaryExpression)
  ExpressionVisitor.VisitBlock(BlockExpression)
  ExpressionVisitor.VisitCatchBlock(CatchBlock)
  ExpressionVisitor.VisitConditional(ConditionalExpression)
  ExpressionVisitor.VisitConstant(ConstantExpression)
  ExpressionVisitor.VisitDebugInfo(DebugInfoExpression)
  ExpressionVisitor.VisitDefault(DefaultExpression)
  ExpressionVisitor.VisitDynamic(DynamicExpression)
  ExpressionVisitor.VisitElementInit(ElementInit)
  ExpressionVisitor.VisitGoto(GotoExpression)
  ExpressionVisitor.VisitIndex(IndexExpression)
  ExpressionVisitor.VisitInvocation(InvocationExpression)
  ExpressionVisitor.VisitLabel(LabelExpression)
  ExpressionVisitor.VisitLabelTarget(LabelTarget)
  ExpressionVisitor.VisitLambda<T>(Expression<T>)
  ExpressionVisitor.VisitListInit(ListInitExpression)
  ExpressionVisitor.VisitLoop(LoopExpression)
  ExpressionVisitor.VisitMemberAssignment(MemberAssignment)
  ExpressionVisitor.VisitMemberBinding(MemberBinding)
  ExpressionVisitor.VisitMemberInit(MemberInitExpression)
  ExpressionVisitor.VisitMemberListBinding(MemberListBinding)
  ExpressionVisitor.VisitMemberMemberBinding(MemberMemberBinding)
  ExpressionVisitor.VisitNew(NewExpression)
  ExpressionVisitor.VisitNewArray(NewArrayExpression)
  ExpressionVisitor.VisitParameter(ParameterExpression)
  ExpressionVisitor.VisitRuntimeVariables(RuntimeVariablesExpression)
  ExpressionVisitor.VisitSwitch(SwitchExpression)
  ExpressionVisitor.VisitSwitchCase(SwitchCase)
  ExpressionVisitor.VisitTry(TryExpression)
  ExpressionVisitor.VisitTypeBinary(TypeBinaryExpression)
  ExpressionVisitor.VisitUnary(UnaryExpression)
  ExpressionVisitor.Visit<T>(ReadOnlyCollection<T>, Func<T, T>)
  object.Equals(object)
  object.Equals(object, object)
  object.GetHashCode()
  object.GetType()
  object.MemberwiseClone()
  object.ReferenceEquals(object, object)
  object.ToString()

## Constructors

### NpgsqlQueryableMethodTranslatingExpressionVisitor(QueryableMethodTranslatingExpressionVisitorDependencies, RelationalQueryableMethodTranslatingExpressionVisitorDependencies, RelationalQueryCompilationContext, INpgsqlSingletonOptions)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    public NpgsqlQueryableMethodTranslatingExpressionVisitor(QueryableMethodTranslatingExpressionVisitorDependencies dependencies, RelationalQueryableMethodTranslatingExpressionVisitorDependencies relationalDependencies, RelationalQueryCompilationContext queryCompilationContext, INpgsqlSingletonOptions npgsqlSingletonOptions)

#### Parameters

`dependencies` QueryableMethodTranslatingExpressionVisitorDependencies
`relationalDependencies` RelationalQueryableMethodTranslatingExpressionVisitorDependencies
`queryCompilationContext` RelationalQueryCompilationContext
`npgsqlSingletonOptions` INpgsqlSingletonOptions

### NpgsqlQueryableMethodTranslatingExpressionVisitor(NpgsqlQueryableMethodTranslatingExpressionVisitor)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected NpgsqlQueryableMethodTranslatingExpressionVisitor(NpgsqlQueryableMethodTranslatingExpressionVisitor parentVisitor)

#### Parameters

`parentVisitor` NpgsqlQueryableMethodTranslatingExpressionVisitor

## Methods

### CreateSubqueryVisitor()

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override QueryableMethodTranslatingExpressionVisitor CreateSubqueryVisitor()

#### Returns

QueryableMethodTranslatingExpressionVisitor

### GenerateJsonPartialUpdateSetter(Expression, SqlExpression, ref SqlExpression?)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override SqlExpression? GenerateJsonPartialUpdateSetter(Expression target, SqlExpression value, ref SqlExpression? existingSetterValue)

#### Parameters

`target` Expression
`value` SqlExpression
`existingSetterValue` SqlExpression

#### Returns

SqlExpression

### IsNaturallyOrdered(SelectExpression)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override bool IsNaturallyOrdered(SelectExpression selectExpression)

#### Parameters

`selectExpression` SelectExpression

#### Returns

bool

### IsOrdered(SelectExpression)

Determines whether the given SelectExpression is ordered, typically because orderings have been added to it.

    protected override bool IsOrdered(SelectExpression selectExpression)

#### Parameters

`selectExpression` SelectExpression

  The SelectExpression to check for ordering.

#### Returns

bool

  Whether `selectExpression` is ordered.

### IsValidSelectExpressionForExecuteDelete(SelectExpression)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override bool IsValidSelectExpressionForExecuteDelete(SelectExpression selectExpression)

#### Parameters

`selectExpression` SelectExpression

#### Returns

bool

### IsValidSelectExpressionForExecuteUpdate(SelectExpression, TableExpressionBase, out TableExpression?)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override bool IsValidSelectExpressionForExecuteUpdate(SelectExpression selectExpression, TableExpressionBase targetTable, out TableExpression? tableExpression)

#### Parameters

`selectExpression` SelectExpression
`targetTable` TableExpressionBase
`tableExpression` TableExpression

#### Returns

bool

### TransformJsonQueryToTable(JsonQueryExpression)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override ShapedQueryExpression TransformJsonQueryToTable(JsonQueryExpression jsonQueryExpression)

#### Parameters

`jsonQueryExpression` JsonQueryExpression

#### Returns

ShapedQueryExpression

### TranslateAll(ShapedQueryExpression, LambdaExpression)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override ShapedQueryExpression? TranslateAll(ShapedQueryExpression source, LambdaExpression predicate)

#### Parameters

`source` ShapedQueryExpression
`predicate` LambdaExpression

#### Returns

ShapedQueryExpression

### TranslateAny(ShapedQueryExpression, LambdaExpression?)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override ShapedQueryExpression? TranslateAny(ShapedQueryExpression source, LambdaExpression? predicate)

#### Parameters

`source` ShapedQueryExpression
`predicate` LambdaExpression

#### Returns

ShapedQueryExpression

### TranslateConcat(ShapedQueryExpression, ShapedQueryExpression)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override ShapedQueryExpression TranslateConcat(ShapedQueryExpression source1, ShapedQueryExpression source2)

#### Parameters

`source1` ShapedQueryExpression
`source2` ShapedQueryExpression

#### Returns

ShapedQueryExpression

### TranslateContains(ShapedQueryExpression, Expression)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override ShapedQueryExpression? TranslateContains(ShapedQueryExpression source, Expression item)

#### Parameters

`source` ShapedQueryExpression
`item` Expression

#### Returns

ShapedQueryExpression

### TranslateCount(ShapedQueryExpression, LambdaExpression?)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override ShapedQueryExpression? TranslateCount(ShapedQueryExpression source, LambdaExpression? predicate)

#### Parameters

`source` ShapedQueryExpression
`predicate` LambdaExpression

#### Returns

ShapedQueryExpression

### TranslateElementAtOrDefault(ShapedQueryExpression, Expression, bool)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override ShapedQueryExpression? TranslateElementAtOrDefault(ShapedQueryExpression source, Expression index, bool returnDefault)

#### Parameters

`source` ShapedQueryExpression
`index` Expression
`returnDefault` bool

#### Returns

ShapedQueryExpression

### TranslateFirstOrDefault(ShapedQueryExpression, LambdaExpression?, Type, bool)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override ShapedQueryExpression? TranslateFirstOrDefault(ShapedQueryExpression source, LambdaExpression? predicate, Type returnType, bool returnDefault)

#### Parameters

`source` ShapedQueryExpression
`predicate` LambdaExpression
`returnType` Type
`returnDefault` bool

#### Returns

ShapedQueryExpression

### TranslatePrimitiveCollection(SqlExpression, IProperty?, string)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override ShapedQueryExpression? TranslatePrimitiveCollection(SqlExpression sqlExpression, IProperty? property, string tableAlias)

#### Parameters

`sqlExpression` SqlExpression
`property` IProperty
`tableAlias` string

#### Returns

ShapedQueryExpression

### TranslateSkip(ShapedQueryExpression, Expression)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override ShapedQueryExpression? TranslateSkip(ShapedQueryExpression source, Expression count)

#### Parameters

`source` ShapedQueryExpression
`count` Expression

#### Returns

ShapedQueryExpression

### TranslateTake(ShapedQueryExpression, Expression)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override ShapedQueryExpression? TranslateTake(ShapedQueryExpression source, Expression count)

#### Parameters

`source` ShapedQueryExpression
`count` Expression

#### Returns

ShapedQueryExpression

### TranslateWhere(ShapedQueryExpression, LambdaExpression)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override ShapedQueryExpression? TranslateWhere(ShapedQueryExpression source, LambdaExpression predicate)

#### Parameters

`source` ShapedQueryExpression
`predicate` LambdaExpression

#### Returns

ShapedQueryExpression

### TrySerializeScalarToJson(JsonScalarExpression, SqlExpression, out SqlExpression?)

This is an internal API that supports the Entity Framework Core infrastructure and not subject to the same compatibility standards as public APIs. It may be changed or removed without notice in any release. You should only use it directly in your code with extreme caution and knowing that doing so can result in application failures when updating to a new Entity Framework Core release.

    protected override bool TrySerializeScalarToJson(JsonScalarExpression target, SqlExpression value, out SqlExpression? jsonValue)

#### Parameters

`target` JsonScalarExpression
`value` SqlExpression
`jsonValue` SqlExpression

#### Returns

bool