语言

SqlNullabilityProcessor 类

定义

一个类,该类基于节点的可为 null 性处理 SQL 树,以应用正在使用的 null 语义,并根据参数值对其进行优化。

此类型通常由数据库提供程序(和其他扩展)使用。 它通常不用于应用程序代码。

[System.Runtime.CompilerServices.Nullable(0)]
public class SqlNullabilityProcessor : System.Linq.Expressions.ExpressionVisitor
public class SqlNullabilityProcessor
[System.Runtime.CompilerServices.Nullable(0)]
public class SqlNullabilityProcessor
[<System.Runtime.CompilerServices.Nullable(0)>]
type SqlNullabilityProcessor = class
    inherit ExpressionVisitor
type SqlNullabilityProcessor = class
[<System.Runtime.CompilerServices.Nullable(0)>]
type SqlNullabilityProcessor = class
Public Class SqlNullabilityProcessor
Inherits ExpressionVisitor
Public Class SqlNullabilityProcessor
继承
SqlNullabilityProcessor
继承
SqlNullabilityProcessor
特性

构造函数

名称 说明
SqlNullabilityProcessor(RelationalParameterBasedSqlProcessorDependencies, Boolean)

创建类的新实例 SqlNullabilityProcessor 。

SqlNullabilityProcessor(RelationalParameterBasedSqlProcessorDependencies, RelationalParameterBasedSqlProcessorParameters)

创建类的新实例 SqlNullabilityProcessor 。

属性

名称 说明
CollectionParameterTranslationMode

一个值,指示要使用的翻译模式。

Dependencies

此服务的关系提供程序特定的依赖项。

ParametersDecorator

正在使用的当前参数值的字典。

ParametersToConstantize

要常量化的参数名称的集合。

ParameterValues

正在使用的当前参数值的字典。

PreferExistsToInWithCoalesce

确定将ExistsExpression一个InExpression转换为何时需要对 null 语义进行复杂的补偿。

UseRelationalNulls

指示关系 null 语义是否正在使用的布尔值。

方法

名称 说明
AddNonNullableColumn(ColumnExpression)

将列添加到不可为 null 的列列表以进一步优化可将列视为不可为 null。

CalculateBucketPadding(Int32, RelationalTypeMapping)

计算要追加到多参数集合扩展中的填充参数数,以便参数计数与共享存储桶大小保持一致。 这是由 CalculateParameterBucketSize(Int32, RelationalTypeMapping) 和 CalculatePadding(Int32, Int32).

CalculatePadding(Int32, Int32)

计算将总计数与最近的存储桶大小对齐所需的填充参数数。

CalculateParameterBucketSize(Int32, RelationalTypeMapping)

获取在使用多个参数时生成参数化集合时填充参数的存储桶大小。 这有助于查询计划膨胀。

DoNotCache()

将正在处理的选择表达式标记为无法缓存。

IsCollectionTable(TableExpressionBase, Expression)

用于标识TableExpressionBase表示集合的提供程序挂钩,例如SQL Server上的 OPENJSON。

OptimizeNonNullableNotExpression(SqlUnaryExpression)

尝试简化对不可为 null 操作数的一元非运算。

OptimizeNotExpression(SqlExpression)

尝试简化一元非运算。

Process(Expression, IReadOnlyDictionary<String,Object>, Boolean)

处理查询表达式以应用 null 语义并对其进行优化。

Process(Expression, ParametersCacheDecorator)

处理查询表达式以应用 null 语义并对其进行优化。

Process(SelectExpression, IReadOnlyDictionary<String,Object>, Boolean)

处理一个 SelectExpression 应用 null 语义并对其进行优化。

ProcessValuesOrderingColumn(ValuesExpression, IReadOnlyList<SqlExpression>, IntTypeMapping, Int32)

如果此处仍有_ord列(其他优化未删除该列),则需要为其添加值。

TryMakeNonNullable(SelectExpression, SelectExpression, Nullable<Boolean>)

尝试将具有可为 null 投影的给定 selectExpression转换为没有可为 null 投影的相同表达式。 这用于从 中提取 NUL,例如SQL Server OPENJSON 的参数参数,以便实现更高效的转换。

UpdateParameterCollection(TableExpressionBase, SqlParameterExpression)

TableExpressionBase给定以前标识为参数化集合表(例如SQL Server上的 OPENJSON),请IsCollectionTable(TableExpressionBase, Expression)替换该表的参数。

Visit(SelectExpression, Boolean)

访问 a SelectExpression.

Visit(SelectExpression)

访问 a SelectExpression.

Visit(SqlExpression, Boolean, Boolean)

访问并 SqlExpression 计算其可为 null 性。

Visit(SqlExpression, Boolean)

访问并 SqlExpression 计算其可为 null 性。

Visit(TableExpressionBase)

访问 a TableExpressionBase.

VisitAtTimeZone(AtTimeZoneExpression, Boolean, Boolean)

这是一个内部 API,支持Entity Framework Core基础结构,不受与公共 API 相同的兼容性标准的约束。 可以在任何版本中更改或删除它,而不通知。 只需在代码中直接使用它,并非常谨慎地知道这样做可能会导致应用程序在更新到新的Entity Framework Core版本时失败。

VisitCase(CaseExpression, Boolean, Boolean)

访问并 CaseExpression 计算其可为 null 性。

VisitCollate(CollateExpression, Boolean, Boolean)

访问并 CollateExpression 计算其可为 null 性。

VisitColumn(ColumnExpression, Boolean, Boolean)

访问并 ColumnExpression 计算其可为 null 性。

VisitCustomSqlExpression(SqlExpression, Boolean, Boolean)

访问提供程序添加的自定义 SqlExpression 并计算其可为 null 性。

VisitDistinct(DistinctExpression, Boolean, Boolean)

访问并 DistinctExpression 计算其可为 null 性。

VisitExists(ExistsExpression, Boolean, Boolean)

访问并 ExistsExpression 计算其可为 null 性。

VisitExtension(Expression)

一个类,该类基于节点的可为 null 性处理 SQL 树,以应用正在使用的 null 语义,并根据参数值对其进行优化。

此类型通常由数据库提供程序(和其他扩展)使用。 它通常不用于应用程序代码。

VisitIn(InExpression, Boolean, Boolean)

访问并 InExpression 计算其可为 null 性。

VisitJsonScalar(JsonScalarExpression, Boolean, Boolean)

访问并 JsonScalarExpression 计算其可为 null 性。

VisitLike(LikeExpression, Boolean, Boolean)

访问并 LikeExpression 计算其可为 null 性。

VisitRowNumber(RowNumberExpression, Boolean, Boolean)

访问并 RowNumberExpression 计算其可为 null 性。

VisitRowValue(RowValueExpression, Boolean, Boolean)

访问并 RowValueExpression 计算其可为 null 性。

VisitScalarSubquery(ScalarSubqueryExpression, Boolean, Boolean)

访问并 ScalarSubqueryExpression 计算其可为 null 性。

VisitSqlBinary(SqlBinaryExpression, Boolean, Boolean)

访问并 SqlBinaryExpression 计算其可为 null 性。

VisitSqlConstant(SqlConstantExpression, Boolean, Boolean)

访问并 SqlConstantExpression 计算其可为 null 性。

VisitSqlFragment(SqlFragmentExpression, Boolean, Boolean)

访问并 SqlFragmentExpression 计算其可为 null 性。

VisitSqlFunction(SqlFunctionExpression, Boolean, Boolean)

访问并 SqlFunctionExpression 计算其可为 null 性。

VisitSqlParameter(SqlParameterExpression, Boolean, Boolean)

访问并 SqlParameterExpression 计算其可为 null 性。

VisitSqlUnary(SqlUnaryExpression, Boolean, Boolean)

访问并 SqlUnaryExpression 计算其可为 null 性。

适用于