public SqlTranslatingExpressionVisitor( [NotNull] IRelationalAnnotationProvider relationalAnnotationProvider, [NotNull] IExpressionFragmentTranslator compositeExpressionFragmentTranslator, [NotNull] IMethodCallTranslator methodCallTranslator, [NotNull] IMemberTranslator memberTranslator, [NotNull] RelationalQueryModelVisitor queryModelVisitor, [CanBeNull] SelectExpression targetSelectExpression = null, [CanBeNull] Expression topLevelPredicate = null, bool bindParentQueries = false, bool inProjection = false) { Check.NotNull(relationalAnnotationProvider, nameof(relationalAnnotationProvider)); Check.NotNull(compositeExpressionFragmentTranslator, nameof(compositeExpressionFragmentTranslator)); Check.NotNull(methodCallTranslator, nameof(methodCallTranslator)); Check.NotNull(memberTranslator, nameof(memberTranslator)); Check.NotNull(queryModelVisitor, nameof(queryModelVisitor)); _relationalAnnotationProvider = relationalAnnotationProvider; _compositeExpressionFragmentTranslator = compositeExpressionFragmentTranslator; _methodCallTranslator = methodCallTranslator; _memberTranslator = memberTranslator; _queryModelVisitor = queryModelVisitor; _targetSelectExpression = targetSelectExpression; _topLevelPredicate = topLevelPredicate; _bindParentQueries = bindParentQueries; _inProjection = inProjection; }
/// <summary> /// 初始化类<see cref="SqlServerExpressionVisitorFactory"/>。 /// </summary> /// <param name="sqlHelper">SQL操作特殊标识接口。</param> /// <param name="typeMapper">类型匹配接口。</param> /// <param name="memberTranslator">字段或属性转换接口。</param> /// <param name="methodCallTranslator">方法调用转换接口。</param> /// <param name="fragmentTranslator">代码段转换接口。</param> public SqlServerExpressionVisitorFactory(ISqlHelper sqlHelper, ITypeMapper typeMapper, IMemberTranslator memberTranslator, IMethodCallTranslator methodCallTranslator, IExpressionFragmentTranslator fragmentTranslator) { _sqlHelper = sqlHelper; _typeMapper = typeMapper; _memberTranslator = memberTranslator; _methodCallTranslator = methodCallTranslator; _fragmentTranslator = fragmentTranslator; }
/// <summary> /// Clones this dependency parameter object with one service replaced. /// </summary> /// <param name="compositeExpressionFragmentTranslator"> A replacement for the current dependency of this type. </param> /// <returns> A new parameter object with the given service replaced. </returns> public SqlTranslatingExpressionVisitorDependencies With([NotNull] IExpressionFragmentTranslator compositeExpressionFragmentTranslator) => new SqlTranslatingExpressionVisitorDependencies( compositeExpressionFragmentTranslator, MethodCallTranslator, MemberTranslator, #pragma warning disable 618 RelationalTypeMapper, #pragma warning restore 618 TypeMappingSource);
/// <summary> /// 初始化类<see cref="SqlExpressionVisitor"/>。 /// </summary> /// <param name="sqlHelper">SQL操作特殊标识接口。</param> /// <param name="typeMapper">类型匹配。</param> /// <param name="memberTranslator">字段或属性转换接口。</param> /// <param name="methodCallTranslator">方法调用转换接口。</param> /// <param name="fragmentTranslator">代码段转换接口。</param> /// <param name="schemaFunc">获取前缀代理方法。</param> protected SqlExpressionVisitor(ISqlHelper sqlHelper, ITypeMapper typeMapper, IMemberTranslator memberTranslator, IMethodCallTranslator methodCallTranslator, IExpressionFragmentTranslator fragmentTranslator, Func <Type, string> schemaFunc) { _sqlHelper = sqlHelper; _typeMapper = typeMapper; _memberTranslator = memberTranslator; _methodCallTranslator = methodCallTranslator; _fragmentTranslator = fragmentTranslator; Delimter = (info, type) => sqlHelper.DelimitIdentifier(info.Name, schemaFunc(type)); }
/// <summary> /// 初始化类<see cref="SqlExpressionVisitor"/>。 /// </summary> /// <param name="sqlHelper">SQL操作特殊标识接口。</param> /// <param name="typeMapper">类型匹配。</param> /// <param name="memberTranslator">字段或属性转换接口。</param> /// <param name="methodCallTranslator">方法调用转换接口。</param> /// <param name="fragmentTranslator">代码段转换接口。</param> protected SqlExpressionVisitor(ISqlHelper sqlHelper, ITypeMapper typeMapper, IMemberTranslator memberTranslator, IMethodCallTranslator methodCallTranslator, IExpressionFragmentTranslator fragmentTranslator) { _sqlHelper = sqlHelper; _typeMapper = typeMapper; _memberTranslator = memberTranslator; _methodCallTranslator = methodCallTranslator; _fragmentTranslator = fragmentTranslator; Delimter = (info, _) => sqlHelper.DelimitIdentifier(info.Name); }
/// <summary> /// <para> /// Creates the service dependencies parameter object for a <see cref="SqlTranslatingExpressionVisitor" />. /// </para> /// <para> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </para> /// <para> /// Do not call this constructor directly from either provider or application code as it may change /// as new dependencies are added. Instead, use this type in your constructor so that an instance /// will be created and injected automatically by the dependency injection container. To create /// an instance with some dependent services replaced, first resolve the object from the dependency /// injection container, then replace selected services using the 'With...' methods. Do not call /// the constructor at any point in this process. /// </para> /// </summary> /// <param name="compositeExpressionFragmentTranslator"> The composite expression fragment translator. </param> /// <param name="methodCallTranslator"> The method call translator. </param> /// <param name="memberTranslator"> The member translator. </param> /// <param name="relationalTypeMapper"> The relational type mapper. </param> public SqlTranslatingExpressionVisitorDependencies( [NotNull] IExpressionFragmentTranslator compositeExpressionFragmentTranslator, [NotNull] IMethodCallTranslator methodCallTranslator, [NotNull] IMemberTranslator memberTranslator, [NotNull] IRelationalTypeMapper relationalTypeMapper) { Check.NotNull(compositeExpressionFragmentTranslator, nameof(compositeExpressionFragmentTranslator)); Check.NotNull(methodCallTranslator, nameof(methodCallTranslator)); Check.NotNull(memberTranslator, nameof(memberTranslator)); Check.NotNull(relationalTypeMapper, nameof(relationalTypeMapper)); CompositeExpressionFragmentTranslator = compositeExpressionFragmentTranslator; MethodCallTranslator = methodCallTranslator; MemberTranslator = memberTranslator; RelationalTypeMapper = relationalTypeMapper; }
/// <summary> /// <para> /// Creates the service dependencies parameter object for a <see cref="SqlTranslatingExpressionVisitor" />. /// </para> /// <para> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </para> /// <para> /// Do not call this constructor directly from either provider or application code as it may change /// as new dependencies are added. Instead, use this type in your constructor so that an instance /// will be created and injected automatically by the dependency injection container. To create /// an instance with some dependent services replaced, first resolve the object from the dependency /// injection container, then replace selected services using the 'With...' methods. Do not call /// the constructor at any point in this process. /// </para> /// </summary> /// <param name="compositeExpressionFragmentTranslator"> The composite expression fragment translator. </param> /// <param name="methodCallTranslator"> The method call translator. </param> /// <param name="memberTranslator"> The member translator. </param> /// <param name="typeMappingSource"> The type mapper. </param> public SqlTranslatingExpressionVisitorDependencies( [NotNull] IExpressionFragmentTranslator compositeExpressionFragmentTranslator, [NotNull] ICompositeMethodCallTranslator methodCallTranslator, [NotNull] IMemberTranslator memberTranslator, [NotNull] IRelationalTypeMappingSource typeMappingSource) { Check.NotNull(compositeExpressionFragmentTranslator, nameof(compositeExpressionFragmentTranslator)); Check.NotNull(methodCallTranslator, nameof(methodCallTranslator)); Check.NotNull(memberTranslator, nameof(memberTranslator)); Check.NotNull(typeMappingSource, nameof(typeMappingSource)); CompositeExpressionFragmentTranslator = compositeExpressionFragmentTranslator; MethodCallTranslator = methodCallTranslator; MemberTranslator = memberTranslator; TypeMappingSource = typeMappingSource; }
public SqlTranslatingExpressionVisitorFactory( [NotNull] IRelationalAnnotationProvider relationalAnnotationProvider, [NotNull] IExpressionFragmentTranslator compositeExpressionFragmentTranslator, [NotNull] IMethodCallTranslator methodCallTranslator, [NotNull] IMemberTranslator memberTranslator) { Check.NotNull(relationalAnnotationProvider, nameof(relationalAnnotationProvider)); Check.NotNull(compositeExpressionFragmentTranslator, nameof(compositeExpressionFragmentTranslator)); Check.NotNull(methodCallTranslator, nameof(methodCallTranslator)); Check.NotNull(memberTranslator, nameof(memberTranslator)); _relationalAnnotationProvider = relationalAnnotationProvider; _compositeExpressionFragmentTranslator = compositeExpressionFragmentTranslator; _methodCallTranslator = methodCallTranslator; _memberTranslator = memberTranslator; }
public SqlTranslatingExpressionVisitorFactory( [NotNull] IRelationalAnnotationProvider relationalAnnotationProvider, [NotNull] IExpressionFragmentTranslator compositeExpressionFragmentTranslator, [NotNull] IMethodCallTranslator methodCallTranslator, [NotNull] IMemberTranslator memberTranslator) { Check.NotNull(relationalAnnotationProvider, nameof(relationalAnnotationProvider)); Check.NotNull(compositeExpressionFragmentTranslator, nameof(compositeExpressionFragmentTranslator)); Check.NotNull(methodCallTranslator, nameof(methodCallTranslator)); Check.NotNull(memberTranslator, nameof(memberTranslator)); _relationalAnnotationProvider = relationalAnnotationProvider; _compositeExpressionFragmentTranslator = compositeExpressionFragmentTranslator; _methodCallTranslator = methodCallTranslator; _memberTranslator = memberTranslator; }
/// <summary> /// Creates a new instance of <see cref="SqlTranslatingExpressionVisitor" />. /// </summary> /// <param name="dependencies"> Parameter object containing dependencies for this service. </param> /// <param name="queryModelVisitor"> The query model visitor. </param> /// <param name="targetSelectExpression"> The target select expression. </param> /// <param name="topLevelPredicate"> The top level predicate. </param> /// <param name="inProjection"> true if the expression to be translated is a LINQ projection. </param> public SqlTranslatingExpressionVisitor( [NotNull] SqlTranslatingExpressionVisitorDependencies dependencies, [NotNull] RelationalQueryModelVisitor queryModelVisitor, [CanBeNull] SelectExpression targetSelectExpression = null, [CanBeNull] Expression topLevelPredicate = null, bool inProjection = false) { Check.NotNull(dependencies, nameof(dependencies)); Check.NotNull(queryModelVisitor, nameof(queryModelVisitor)); _compositeExpressionFragmentTranslator = dependencies.CompositeExpressionFragmentTranslator; _methodCallTranslator = dependencies.MethodCallTranslator; _memberTranslator = dependencies.MemberTranslator; _relationalTypeMapper = dependencies.RelationalTypeMapper; _queryModelVisitor = queryModelVisitor; _targetSelectExpression = targetSelectExpression; _topLevelPredicate = topLevelPredicate; _inProjection = inProjection; }
public CypherTranslatingExpressionVisitor( [NotNull] SqlTranslatingExpressionVisitorDependencies dependencies, [NotNull] CypherQueryModelVisitor queryModelVisitor, [CanBeNull] ReadOnlyExpression targetReadOnlyExpresion = null, [CanBeNull] Expression topLevelWhere = null, bool inReturn = false ) { Check.NotNull(dependencies, nameof(dependencies)); Check.NotNull(queryModelVisitor, nameof(queryModelVisitor)); _compositeExpressionFragmentTranslator = dependencies.CompositeExpressionFragmentTranslator; _targetReadOnlyExpression = targetReadOnlyExpresion; _inReturn = inReturn; _isTopLevelReturn = inReturn; _queryModelVisitor = queryModelVisitor; _relationalTypeMapper = dependencies.RelationalTypeMapper; }
/// <summary> /// <para> /// Creates the service dependencies parameter object for a <see cref="SqlTranslatingExpressionVisitor" />. /// </para> /// <para> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </para> /// <para> /// Do not call this constructor directly from either provider or application code as it may change /// as new dependencies are added. Instead, use this type in your constructor so that an instance /// will be created and injected automatically by the dependency injection container. To create /// an instance with some dependent services replaced, first resolve the object from the dependency /// injection container, then replace selected services using the 'With...' methods. Do not call /// the constructor at any point in this process. /// </para> /// </summary> /// <param name="compositeExpressionFragmentTranslator"> The composite expression fragment translator. </param> /// <param name="methodCallTranslator"> The method call translator. </param> /// <param name="memberTranslator"> The member translator. </param> /// <param name="relationalTypeMapper"> The relational type mapper. </param> /// <param name="typeMappingSource"> The type mapper. </param> public SqlTranslatingExpressionVisitorDependencies( [NotNull] IExpressionFragmentTranslator compositeExpressionFragmentTranslator, [NotNull] ICompositeMethodCallTranslator methodCallTranslator, [NotNull] IMemberTranslator memberTranslator, [NotNull] IRelationalTypeMapper relationalTypeMapper, [NotNull] IRelationalTypeMappingSource typeMappingSource) { Check.NotNull(compositeExpressionFragmentTranslator, nameof(compositeExpressionFragmentTranslator)); Check.NotNull(methodCallTranslator, nameof(methodCallTranslator)); Check.NotNull(memberTranslator, nameof(memberTranslator)); Check.NotNull(relationalTypeMapper, nameof(relationalTypeMapper)); Check.NotNull(typeMappingSource, nameof(typeMappingSource)); CompositeExpressionFragmentTranslator = compositeExpressionFragmentTranslator; MethodCallTranslator = methodCallTranslator; MemberTranslator = memberTranslator; #pragma warning disable 618 RelationalTypeMapper = relationalTypeMapper; #pragma warning restore 618 TypeMappingSource = typeMappingSource; }
/// <summary> /// 初始化类<see cref="SqlServerExpressionVisitor"/>。 /// </summary> /// <param name="sqlHelper">SQL操作特殊标识接口。</param> /// <param name="typeMapper">类型匹配。</param> /// <param name="memberTranslator">字段或属性转换接口。</param> /// <param name="methodCallTranslator">方法调用转换接口。</param> /// <param name="fragmentTranslator">代码段转换接口。</param> public SqlServerExpressionVisitor(ISqlHelper sqlHelper, ITypeMapper typeMapper, IMemberTranslator memberTranslator, IMethodCallTranslator methodCallTranslator, IExpressionFragmentTranslator fragmentTranslator) : base(sqlHelper, typeMapper, memberTranslator, methodCallTranslator, fragmentTranslator) { }
/// <summary> /// Clones this dependency parameter object with one service replaced. /// </summary> /// <param name="compositeExpressionFragmentTranslator"> A replacement for the current dependency of this type. </param> /// <returns> A new parameter object with the given service replaced. </returns> public SqlTranslatingExpressionVisitorDependencies With([NotNull] IExpressionFragmentTranslator compositeExpressionFragmentTranslator) => new SqlTranslatingExpressionVisitorDependencies( compositeExpressionFragmentTranslator, MethodCallTranslator, MemberTranslator, TypeMappingSource);
public static DbContextOptionsBuilder <TContext> AddExpressionFragmentTranslator <TContext>([NotNull] this DbContextOptionsBuilder <TContext> builder, [NotNull] IExpressionFragmentTranslator translator) where TContext : DbContext { // ReSharper disable once RedundantCast ((DbContextOptionsBuilder)builder).AddExpressionFragmentTranslator(translator); return(builder); }
/// <summary> /// 初始化类<see cref="SqlServerExpressionVisitor"/>。 /// </summary> /// <param name="sqlHelper">SQL操作特殊标识接口。</param> /// <param name="typeMapper">类型匹配。</param> /// <param name="memberTranslator">字段或属性转换接口。</param> /// <param name="methodCallTranslator">方法调用转换接口。</param> /// <param name="fragmentTranslator">代码段转换接口。</param> /// <param name="schemaFunc">获取前缀代理方法。</param> public SqlServerExpressionVisitor(ISqlHelper sqlHelper, ITypeMapper typeMapper, IMemberTranslator memberTranslator, IMethodCallTranslator methodCallTranslator, IExpressionFragmentTranslator fragmentTranslator, Func <Type, string> schemaFunc) : base(sqlHelper, typeMapper, memberTranslator, methodCallTranslator, fragmentTranslator, schemaFunc) { }
public static DbContextOptionsBuilder AddExpressionFragmentTranslator([NotNull] this DbContextOptionsBuilder builder, [NotNull] IExpressionFragmentTranslator translator) { builder.AddOrUpdateExtension <RelationalDbContextOptionsExtension>(extension => extension.AddExpressionFragmentTranslator(translator)); return(builder); }