语言

RelationalQueryableMethodTranslatingExpressionVisitor 类

定义

一个类,用于转换查询中的可查询方法。

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

[System.Runtime.CompilerServices.Nullable(0)]
public class RelationalQueryableMethodTranslatingExpressionVisitor : Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor
public class RelationalQueryableMethodTranslatingExpressionVisitor : Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor
[<System.Runtime.CompilerServices.Nullable(0)>]
type RelationalQueryableMethodTranslatingExpressionVisitor = class
    inherit QueryableMethodTranslatingExpressionVisitor
type RelationalQueryableMethodTranslatingExpressionVisitor = class
    inherit QueryableMethodTranslatingExpressionVisitor
Public Class RelationalQueryableMethodTranslatingExpressionVisitor
Inherits QueryableMethodTranslatingExpressionVisitor
继承
RelationalQueryableMethodTranslatingExpressionVisitor
特性

构造函数

名称 说明
RelationalQueryableMethodTranslatingExpressionVisitor(QueryableMethodTranslatingExpressionVisitorDependencies, RelationalQueryableMethodTranslatingExpressionVisitorDependencies, IModel)

一个类,用于转换查询中的可查询方法。

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

RelationalQueryableMethodTranslatingExpressionVisitor(QueryableMethodTranslatingExpressionVisitorDependencies, RelationalQueryableMethodTranslatingExpressionVisitorDependencies, QueryCompilationContext)

创建类的新实例 QueryableMethodTranslatingExpressionVisitor 。

RelationalQueryableMethodTranslatingExpressionVisitor(QueryableMethodTranslatingExpressionVisitorDependencies, RelationalQueryableMethodTranslatingExpressionVisitorDependencies, RelationalQueryCompilationContext)

创建类的新实例 QueryableMethodTranslatingExpressionVisitor 。

RelationalQueryableMethodTranslatingExpressionVisitor(RelationalQueryableMethodTranslatingExpressionVisitor)

创建类的新实例 QueryableMethodTranslatingExpressionVisitor 。

字段

名称 说明
ValuesOrderingColumnName

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

ValuesValueColumnName

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

属性

名称 说明
Dependencies

此服务的依赖项。

(继承自 QueryableMethodTranslatingExpressionVisitor)
QueryCompilationContext

当前编译的查询编译上下文对象。

(继承自 QueryableMethodTranslatingExpressionVisitor)
RelationalDependencies

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

TranslationErrorDetails

有关翻译期间遇到的错误的详细信息。

(继承自 QueryableMethodTranslatingExpressionVisitor)

方法

名称 说明
AddTranslationErrorDetails(String)

添加有关翻译过程中遇到的错误的详细信息。

(继承自 QueryableMethodTranslatingExpressionVisitor)
ApplyInferredTypeMappings(Expression, IReadOnlyDictionary<ValueTuple<TableExpressionBase,String>,RelationalTypeMapping>)

在顶级转换结束时调用,对可查询常量/参数应用推断的类型映射,并验证是否都具有 SqlExpression 类型映射。

CreateSelect(IEntityType)

用于创建表示给定实体类型的查询的根 SelectExpression 。

CreateSelect(JsonQueryExpression, TableExpressionBase, String, Type, RelationalTypeMapping)

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

CreateShapedQueryExpression(IEntityType)

为给定实体类型创建一个 ShapedQueryExpression 。

CreateShapedQueryExpression(Type)
已过时.

通过在模型中查找给定类型的实体类型,为给定类型创建一个 ShapedQueryExpression 。

CreateSubqueryVisitor()

创建自定义的访问者以转换子查询。TranslateSubquery(Expression)

GenerateJsonPartialUpdateSetter(Expression, SqlExpression, SqlExpression)

用于在 JSON 列中实现部分更新的提供程序扩展点。

IsNaturallyOrdered(SelectExpression)

确定给定 SelectExpression 是否自然排序,这意味着 EF 自动添加任何排序以保留 JSON 数组的自然顺序,而不是因为原始 LINQ 查询包含显式排序。

IsOrdered(SelectExpression)

确定给定 SelectExpression 是否是有序的,通常是因为已将排序添加到其中。

IsValidSelectExpressionForExecuteDelete(SelectExpression, EntityShaperExpression, TableExpression)

检查当前选择表达式是否可用于执行删除操作 as-is,或者是否必须向下推送到子查询中。

IsValidSelectExpressionForExecuteDelete(SelectExpression, StructuralTypeShaperExpression, TableExpression)
已过时.

此方法已过时,请改用接受单个 SelectExpression 参数的方法。

IsValidSelectExpressionForExecuteDelete(SelectExpression)

检查当前选择表达式是否可以 as-is 执行删除操作,或者是否必须向下推送到子查询中。

IsValidSelectExpressionForExecuteUpdate(SelectExpression, EntityShaperExpression, TableExpression)

验证当前选择表达式是否可用于执行更新操作,或者是否需要作为子查询联接。

IsValidSelectExpressionForExecuteUpdate(SelectExpression, TableExpressionBase, TableExpression)

验证当前选择表达式是否可用于执行更新操作,或者是否需要作为子查询联接。

MarkShaperNullable(Expression)

将给定整形程序表达式中的实体整形程序标记为可为 null。

(继承自 QueryableMethodTranslatingExpressionVisitor)
TransformJsonQueryToTable(JsonQueryExpression)

当 LINQ 运算符在 JSON 文档中的集合上撰写时调用。 将提供的JsonQueryExpression表示对集合的访问权限转换为提供程序特定的方法,以将 JSON 数组扩展到关系表/行集(例如SQL Server OPENJSON)。

Translate(Expression)

将表达式转换为等效的 SQL 表示形式。

Translate(Expression)

将表达式转换为等效的 SQL 表示形式。

(继承自 QueryableMethodTranslatingExpressionVisitor)
TranslateAll(ShapedQueryExpression, LambdaExpression)

转换 All<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) 给定源上的方法。

TranslateAny(ShapedQueryExpression, LambdaExpression)

转换 Any<TSource>(IQueryable<TSource>) 给定源上的方法和其他重载。

TranslateAverage(ShapedQueryExpression, LambdaExpression, Type)

转换 Average(IQueryable<Decimal>) 给定源上的方法和其他重载。

TranslateCast(ShapedQueryExpression, Type)

转换 Cast<TResult>(IQueryable) 给定源上的方法。

TranslateConcat(ShapedQueryExpression, ShapedQueryExpression)

转换 Concat<TSource>(IQueryable<TSource>, IEnumerable<TSource>) 给定源上的方法。

TranslateContains(ShapedQueryExpression, Expression)

转换 Contains<TSource>(IQueryable<TSource>, TSource) 给定源上的方法。

TranslateCount(ShapedQueryExpression, LambdaExpression)

转换 Count<TSource>(IQueryable<TSource>) 给定源上的方法和其他重载。

TranslateDefaultIfEmpty(ShapedQueryExpression, Expression)

转换 DefaultIfEmpty<TSource>(IQueryable<TSource>) 给定源上的方法和其他重载。

TranslateDistinct(ShapedQueryExpression)

转换 Distinct<TSource>(IQueryable<TSource>) 给定源上的方法。

TranslateElementAtOrDefault(ShapedQueryExpression, Expression, Boolean)

ElementAt<TSource>(IQueryable<TSource>, Int32)转换方法或ElementAtOrDefault<TSource>(IQueryable<TSource>, Int32)给定源。

TranslateExcept(ShapedQueryExpression, ShapedQueryExpression)

转换 Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) 给定源上的方法。

TranslateExecuteDelete(ShapedQueryExpression)

转换 ExecuteDelete<TSource>(IQueryable<TSource>) 给定源上的方法。

TranslateExecuteUpdate(ShapedQueryExpression, IReadOnlyList<QueryableMethodTranslatingExpressionVisitor.ExecuteUpdateSetter>)

转换 ExecuteUpdate<TSource>(IQueryable<TSource>, Action<UpdateSettersBuilder<TSource>>) 给定源上的方法。

TranslateExecuteUpdate(ShapedQueryExpression, LambdaExpression)

转换 ExecuteUpdate<TSource>(IQueryable<TSource>, Expression<Func<SetPropertyCalls<TSource>,SetPropertyCalls<TSource>>>) 给定源上的方法。

TranslateExpression(Expression, Boolean)

将给定表达式转换为等效的 SQL 表示形式。

TranslateExpression(Expression)

将给定表达式转换为等效的 SQL 表示形式。

TranslateFirstOrDefault(ShapedQueryExpression, LambdaExpression, Type, Boolean)

在 First<TSource>(IQueryable<TSource>) 给定源上转换方法或其 FirstOrDefault<TSource>(IQueryable<TSource>) 其他重载。

TranslateFullJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)

将 FullJoin 转换为给定源。

TranslateGroupBy(ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)

转换 GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) 给定源上的方法和其他重载。

TranslateGroupJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)

转换 GroupJoin<TOuter,TInner,TKey,TResult>(IQueryable<TOuter>, IEnumerable<TInner>, Expression<Func<TOuter,TKey>>, Expression<Func<TInner,TKey>>, Expression<Func<TOuter,IEnumerable<TInner>,TResult>>) 给定源上的方法。

TranslateInlineQueryRoot(InlineQueryRootExpression)

将内联集合转换为可查询的 SQL VALUES 表达式。

TranslateIntersect(ShapedQueryExpression, ShapedQueryExpression)

转换 Intersect<TSource>(IQueryable<TSource>, IEnumerable<TSource>) 给定源上的方法。

TranslateJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)

转换 Join<TOuter,TInner,TKey,TResult>(IQueryable<TOuter>, IEnumerable<TInner>, Expression<Func<TOuter,TKey>>, Expression<Func<TInner,TKey>>, Expression<Func<TOuter,TInner,TResult>>) 给定源上的方法。

TranslateLambdaExpression(ShapedQueryExpression, LambdaExpression)

将源的给定 lambda 表达式 ShapedQueryExpression 转换为等效的 SQL 表示形式。

TranslateLastOrDefault(ShapedQueryExpression, LambdaExpression, Type, Boolean)

在 Last<TSource>(IQueryable<TSource>) 给定源上转换方法或其 LastOrDefault<TSource>(IQueryable<TSource>) 其他重载。

TranslateLeftJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)

将 LeftJoin 转换为给定源。

TranslateLongCount(ShapedQueryExpression, LambdaExpression)

转换 LongCount<TSource>(IQueryable<TSource>) 给定源上的方法和其他重载。

TranslateMax(ShapedQueryExpression, LambdaExpression, Type)

转换 Max<TSource>(IQueryable<TSource>) 给定源上的方法和其他重载。

TranslateMemberAccess(Expression, MemberIdentity)

转换成员访问权限。 当实体类型的属性表示可查询 LINQ 运算符可组合的集合时使用。

TranslateMin(ShapedQueryExpression, LambdaExpression, Type)

转换 Min<TSource>(IQueryable<TSource>) 给定源上的方法和其他重载。

TranslateOfType(ShapedQueryExpression, Type)

转换 OfType<TResult>(IQueryable) 给定源上的方法。

TranslateOrderBy(ShapedQueryExpression, LambdaExpression, Boolean)

通过 OrderBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) 给定源转换或 OrderByDescending<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) 方法。

TranslateParameterQueryRoot(ParameterQueryRootExpression)

转换一个 ParameterQueryRootExpression,该集合表示在查询中作为参数引用的可查询集合。

TranslatePrimitiveCollection(SqlExpression, IProperty, String)

转换基元值的参数或列集合。 提供程序可以重写此项,以将 int[] 列或参数转换为可查询表(SQL Server 上的 OPENJSON,unnest on PostgreSQL...)。默认实现始终返回null(无翻译)。

TranslateResultSelectorForJoin(ShapedQueryExpression, LambdaExpression, Expression, Type)
已过时.

转换联接操作的结果选择器。

(继承自 QueryableMethodTranslatingExpressionVisitor)
TranslateReverse(ShapedQueryExpression)

转换 Reverse<TSource>(IQueryable<TSource>) 给定源上的方法。

TranslateRightJoin(ShapedQueryExpression, ShapedQueryExpression, LambdaExpression, LambdaExpression, LambdaExpression)

将 LeftJoin 转换为给定源。

TranslateSelect(ShapedQueryExpression, LambdaExpression)

转换 Select<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>) 给定源上的方法。

TranslateSelectMany(ShapedQueryExpression, LambdaExpression, LambdaExpression)

转换 SelectMany<TSource,TCollection,TResult>(IQueryable<TSource>, Expression<Func<TSource, IEnumerable<TCollection>>>, Expression<Func<TSource,TCollection, TResult>>) 给定源上的方法。

TranslateSelectMany(ShapedQueryExpression, LambdaExpression)

转换 SelectMany<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,IEnumerable<TResult>>>) 给定源上的方法。

TranslateSetters(ShapedQueryExpression, IReadOnlyList<QueryableMethodTranslatingExpressionVisitor.ExecuteUpdateSetter>, TableExpressionBase)

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

TranslateSingleOrDefault(ShapedQueryExpression, LambdaExpression, Type, Boolean)

在 Single<TSource>(IQueryable<TSource>) 给定源上转换方法或其 SingleOrDefault<TSource>(IQueryable<TSource>) 其他重载。

TranslateSkip(ShapedQueryExpression, Expression)

转换 Skip<TSource>(IQueryable<TSource>, Int32) 给定源上的方法。

TranslateSkipWhile(ShapedQueryExpression, LambdaExpression)

转换 SkipWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) 给定源上的方法。

TranslateSubquery(Expression)

转换给定的子查询。

(继承自 QueryableMethodTranslatingExpressionVisitor)
TranslateSum(ShapedQueryExpression, LambdaExpression, Type)

转换 Sum(IQueryable<Decimal>) 给定源上的方法和其他重载。

TranslateTake(ShapedQueryExpression, Expression)

转换 Take<TSource>(IQueryable<TSource>, Int32) 给定源上的方法。

TranslateTakeWhile(ShapedQueryExpression, LambdaExpression)

转换 TakeWhile<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) 给定源上的方法。

TranslateThenBy(ShapedQueryExpression, LambdaExpression, Boolean)

通过 ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) 给定源转换或 ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) 方法。

TranslateUnion(ShapedQueryExpression, ShapedQueryExpression)

转换 Union<TSource>(IQueryable<TSource>, IEnumerable<TSource>) 给定源上的方法。

TranslateWhere(ShapedQueryExpression, LambdaExpression)

转换 Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) 给定源上的方法。

TrySerializeScalarToJson(JsonScalarExpression, SqlExpression, SqlExpression)

将关系标量值序列化为 JSON,以便在 JSON 列中 TranslateExecuteUpdate(ShapedQueryExpression, IReadOnlyList<QueryableMethodTranslatingExpressionVisitor.ExecuteUpdateSetter>)进行部分更新。

TryTranslateSetters(ShapedQueryExpression, IReadOnlyList<QueryableMethodTranslatingExpressionVisitor.ExecuteUpdateSetter>, IReadOnlyList<ColumnValueSetter>, TableExpressionBase)

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

VisitConstant(ConstantExpression)

一个类,用于转换查询中的可查询方法。

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

(继承自 QueryableMethodTranslatingExpressionVisitor)
VisitExtension(Expression)

一个类,用于转换查询中的可查询方法。

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

VisitExtension(Expression)

一个类,用于转换查询中的可查询方法。

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

(继承自 QueryableMethodTranslatingExpressionVisitor)
VisitInlineQueryRoot(InlineQueryRootExpression)

将内联集合转换为可查询的 SQL VALUES 表达式。

VisitMember(MemberExpression)

一个类,用于转换查询中的可查询方法。

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

(继承自 QueryableMethodTranslatingExpressionVisitor)
VisitMethodCall(MethodCallExpression)

一个类,用于转换查询中的可查询方法。

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

VisitMethodCall(MethodCallExpression)

一个类,用于转换查询中的可查询方法。

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

(继承自 QueryableMethodTranslatingExpressionVisitor)

适用于