# Class NpgsqlParameterBasedSqlProcessor

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 NpgsqlParameterBasedSqlProcessor : RelationalParameterBasedSqlProcessor

Inheritance
  object
  RelationalParameterBasedSqlProcessor
  NpgsqlParameterBasedSqlProcessor

Inherited Members
  RelationalParameterBasedSqlProcessor.ExpandFromSqlParameter(Expression, IReadOnlyDictionary<string, object>, out bool)
  RelationalParameterBasedSqlProcessor.Dependencies
  RelationalParameterBasedSqlProcessor.UseRelationalNulls
  object.Equals(object)
  object.Equals(object, object)
  object.GetHashCode()
  object.GetType()
  object.MemberwiseClone()
  object.ReferenceEquals(object, object)
  object.ToString()

## Constructors

### NpgsqlParameterBasedSqlProcessor(RelationalParameterBasedSqlProcessorDependencies, 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.

    public NpgsqlParameterBasedSqlProcessor(RelationalParameterBasedSqlProcessorDependencies dependencies, bool useRelationalNulls)

#### Parameters

`dependencies` RelationalParameterBasedSqlProcessorDependencies
`useRelationalNulls` bool

## Methods

### Optimize(Expression, IReadOnlyDictionary<string, object?>, out 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.

    public override Expression Optimize(Expression queryExpression, IReadOnlyDictionary<string, object?> parametersValues, out bool canCache)

#### Parameters

`queryExpression` Expression
`parametersValues` IReadOnlyDictionary<string, object>
`canCache` bool

#### Returns

Expression

### ProcessSqlNullability(Expression, IReadOnlyDictionary<string, object?>, out bool)

Processes the query expression based on nullability of nodes to apply null semantics in use and optimize it for given parameter values.

    protected override Expression ProcessSqlNullability(Expression selectExpression, IReadOnlyDictionary<string, object?> parametersValues, out bool canCache)

#### Parameters

`selectExpression` Expression
`parametersValues` IReadOnlyDictionary<string, object>

  A dictionary of parameter values to use.

`canCache` bool

  A bool value indicating if the query expression can be cached.

#### Returns

Expression

  A processed query expression.