Пример #1
0
        public RelationalQueryCompilationContext(
            [NotNull] IModel model,
            [NotNull] ILogger logger,
            [NotNull] ILinqOperatorProvider linqOperatorProvider,
            [NotNull] IResultOperatorHandler resultOperatorHandler,
            [NotNull] IEntityMaterializerSource entityMaterializerSource,
            [NotNull] IEntityKeyFactorySource entityKeyFactorySource,
            [NotNull] IClrAccessorSource <IClrPropertyGetter> clrPropertyGetterSource,
            [NotNull] IQueryMethodProvider queryMethodProvider,
            [NotNull] IMethodCallTranslator compositeMethodCallTranslator,
            [NotNull] IMemberTranslator compositeMemberTranslator,
            [NotNull] IRelationalValueBufferFactoryFactory valueBufferFactoryFactory,
            [NotNull] IRelationalTypeMapper typeMapper)
            : base(
                model,
                logger,
                linqOperatorProvider,
                resultOperatorHandler,
                entityMaterializerSource,
                entityKeyFactorySource,
                clrPropertyGetterSource)

        {
            Check.NotNull(queryMethodProvider, nameof(queryMethodProvider));
            Check.NotNull(compositeMethodCallTranslator, nameof(compositeMethodCallTranslator));
            Check.NotNull(compositeMemberTranslator, nameof(compositeMemberTranslator));
            Check.NotNull(valueBufferFactoryFactory, nameof(valueBufferFactoryFactory));
            Check.NotNull(typeMapper, nameof(typeMapper));

            QueryMethodProvider           = queryMethodProvider;
            CompositeMethodCallTranslator = compositeMethodCallTranslator;
            CompositeMemberTranslator     = compositeMemberTranslator;
            ValueBufferFactoryFactory     = valueBufferFactoryFactory;
            TypeMapper = typeMapper;
        }
Пример #2
0
 public NpgsqlNodaTimeMemberTranslatorPlugin([NotNull] ISqlExpressionFactory sqlExpressionFactory)
 {
     Translators = new IMemberTranslator[]
     {
         new NpgsqlNodaTimeMemberTranslator(sqlExpressionFactory),
     };
 }
Пример #3
0
 public FakeRelationalDatabase(
     IModel model,
     IEntityKeyFactorySource entityKeyFactorySource,
     IEntityMaterializerSource entityMaterializerSource,
     IClrAccessorSource <IClrPropertyGetter> clrPropertyGetterSource,
     IRelationalConnection connection,
     ICommandBatchPreparer batchPreparer,
     IBatchExecutor batchExecutor,
     IDbContextOptions options,
     ILoggerFactory loggerFactory,
     IRelationalValueBufferFactoryFactory valueBufferFactoryFactory,
     IMethodCallTranslator compositeMethodCallTranslator,
     IMemberTranslator compositeMemberTranslator,
     IRelationalTypeMapper typeMapper)
     : base(
         model,
         entityKeyFactorySource,
         entityMaterializerSource,
         clrPropertyGetterSource,
         connection,
         batchPreparer,
         batchExecutor,
         options,
         loggerFactory,
         valueBufferFactoryFactory,
         compositeMethodCallTranslator,
         compositeMemberTranslator,
         typeMapper)
 {
 }
        protected override RelationalQueryCompilationContext CreateQueryCompilationContext(
            ILinqOperatorProvider linqOperatorProvider,
            IResultOperatorHandler resultOperatorHandler,
            IQueryMethodProvider enumerableMethodProvider,
            IMethodCallTranslator compositeMethodCallTranslator,
            IMemberTranslator compositeMemberTranslator)
        {
            Check.NotNull(linqOperatorProvider, nameof(linqOperatorProvider));
            Check.NotNull(resultOperatorHandler, nameof(resultOperatorHandler));
            Check.NotNull(enumerableMethodProvider, nameof(enumerableMethodProvider));
            Check.NotNull(compositeMethodCallTranslator, nameof(compositeMethodCallTranslator));
            Check.NotNull(compositeMemberTranslator, nameof(compositeMemberTranslator));

            return new SqlServerQueryCompilationContext(
                Model,
                Logger,
                linqOperatorProvider,
                resultOperatorHandler,
                EntityMaterializerSource,
                EntityKeyFactorySource,
                ClrPropertyGetterSource,
                enumerableMethodProvider,
                compositeMethodCallTranslator,
                compositeMemberTranslator,
                ValueBufferFactoryFactory,
                TypeMapper,
                RelationalExtensions);
        }
 public SqlServerDatabase(
     [NotNull] IModel model,
     [NotNull] IEntityKeyFactorySource entityKeyFactorySource,
     [NotNull] IEntityMaterializerSource entityMaterializerSource,
     [NotNull] IClrAccessorSource <IClrPropertyGetter> clrPropertyGetterSource,
     [NotNull] ISqlServerConnection connection,
     [NotNull] ICommandBatchPreparer batchPreparer,
     [NotNull] IBatchExecutor batchExecutor,
     [NotNull] IDbContextOptions options,
     [NotNull] ILoggerFactory loggerFactory,
     [NotNull] IRelationalValueBufferFactoryFactory valueBufferFactoryFactory,
     [NotNull] IMethodCallTranslator compositeMethodCallTranslator,
     [NotNull] IMemberTranslator compositeMemberTranslator,
     [NotNull] IRelationalTypeMapper typeMapper,
     [NotNull] IRelationalMetadataExtensionProvider relationalExtensions)
     : base(
         model,
         entityKeyFactorySource,
         entityMaterializerSource,
         clrPropertyGetterSource,
         connection,
         batchPreparer,
         batchExecutor,
         options,
         loggerFactory,
         valueBufferFactoryFactory,
         compositeMethodCallTranslator,
         compositeMemberTranslator,
         typeMapper,
         relationalExtensions)
 {
 }
 public SqliteNodaTimeMemberTranslatorPlugin(ISqlExpressionFactory sqlExpressionFactory)
 {
     Translators = new IMemberTranslator[]
     {
         new SqliteNodaTimeMemberTranslator(sqlExpressionFactory),
     };
 }
        protected override RelationalQueryCompilationContext CreateQueryCompilationContext(
            ILinqOperatorProvider linqOperatorProvider,
            IResultOperatorHandler resultOperatorHandler,
            IQueryMethodProvider enumerableMethodProvider,
            IMethodCallTranslator compositeMethodCallTranslator,
            IMemberTranslator compositeMemberTranslator)
        {
            Check.NotNull(linqOperatorProvider, nameof(linqOperatorProvider));
            Check.NotNull(resultOperatorHandler, nameof(resultOperatorHandler));
            Check.NotNull(enumerableMethodProvider, nameof(enumerableMethodProvider));
            Check.NotNull(compositeMethodCallTranslator, nameof(compositeMethodCallTranslator));
            Check.NotNull(compositeMemberTranslator, nameof(compositeMemberTranslator));

            return(new SqlServerQueryCompilationContext(
                       Model,
                       Logger,
                       linqOperatorProvider,
                       resultOperatorHandler,
                       EntityMaterializerSource,
                       EntityKeyFactorySource,
                       ClrPropertyGetterSource,
                       enumerableMethodProvider,
                       compositeMethodCallTranslator,
                       compositeMemberTranslator,
                       ValueBufferFactoryFactory,
                       TypeMapper,
                       RelationalExtensions));
        }
 public SqlServerQueryCompilationContext(
     [NotNull] IModel model,
     [NotNull] ILogger logger,
     [NotNull] ILinqOperatorProvider linqOperatorProvider,
     [NotNull] IResultOperatorHandler resultOperatorHandler,
     [NotNull] IEntityMaterializerSource entityMaterializerSource,
     [NotNull] IEntityKeyFactorySource entityKeyFactorySource,
     [NotNull] IClrAccessorSource <IClrPropertyGetter> clrPropertyGetterSource,
     [NotNull] IQueryMethodProvider queryMethodProvider,
     [NotNull] IMethodCallTranslator compositeMethodCallTranslator,
     [NotNull] IMemberTranslator compositeMemberTranslator,
     [NotNull] IRelationalValueBufferFactoryFactory valueBufferFactoryFactory,
     [NotNull] IRelationalTypeMapper typeMapper,
     [NotNull] IRelationalMetadataExtensionProvider relationalExtensions)
     : base(
         model,
         logger,
         linqOperatorProvider,
         resultOperatorHandler,
         entityMaterializerSource,
         entityKeyFactorySource,
         clrPropertyGetterSource,
         queryMethodProvider,
         compositeMethodCallTranslator,
         compositeMemberTranslator,
         valueBufferFactoryFactory,
         typeMapper,
         relationalExtensions)
 {
 }
 public NpgsqlJsonPocoMemberTranslatorPlugin(IRelationalTypeMappingSource typeMappingSource, ISqlExpressionFactory sqlExpressionFactory, IModel model)
 {
     Translators = new IMemberTranslator[]
     {
         new NpgsqlJsonPocoMemberTranslator(typeMappingSource, (NpgsqlSqlExpressionFactory)sqlExpressionFactory, model)
     };
 }
        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;
 }
Пример #12
0
 public NpgsqlNodaTimeMemberTranslatorPlugin(
     IRelationalTypeMappingSource typeMappingSource,
     ISqlExpressionFactory sqlExpressionFactory)
 {
     Translators = new IMemberTranslator[]
     {
         new NpgsqlNodaTimeMemberTranslator(typeMappingSource, (NpgsqlSqlExpressionFactory)sqlExpressionFactory),
     };
 }
 /// <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);
 }
Пример #15
0
        /// <summary>
        ///     Clones this dependency parameter object with one service replaced.
        /// </summary>
        /// <param name="memberTranslator"> 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] IMemberTranslator memberTranslator)
        => new SqlTranslatingExpressionVisitorDependencies(
            CompositeExpressionFragmentTranslator,
            MethodCallTranslator,
            memberTranslator,
#pragma warning disable 618
            RelationalTypeMapper,
#pragma warning restore 618
            TypeMappingSource);
Пример #16
0
 /// <summary>
 ///     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.
 /// </summary>
 public MySqlJsonMemberTranslatorPlugin(
     IRelationalTypeMappingSource typeMappingSource,
     ISqlExpressionFactory sqlExpressionFactory,
     IMySqlOptions options)
 {
     Translators = new IMemberTranslator[]
     {
         //new MySqlGeometryMemberTranslator(typeMappingSource, sqlExpressionFactory),
     };
 }
 /// <summary>
 ///     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.
 /// </summary>
 public SqlServerNetTopologySuiteMemberTranslatorPlugin(
     IRelationalTypeMappingSource typeMappingSource, ISqlExpressionFactory sqlExpressionFactory)
 {
     Translators = new IMemberTranslator[] {
         new SqlServerGeometryMemberTranslator(typeMappingSource, sqlExpressionFactory),
         new SqlServerGeometryCollectionMemberTranslator(sqlExpressionFactory),
         new SqlServerLineStringMemberTranslator(typeMappingSource, sqlExpressionFactory),
         new SqlServerMultiLineStringMemberTranslator(sqlExpressionFactory),
         new SqlServerPointMemberTranslator(sqlExpressionFactory),
         new SqlServerPolygonMemberTranslator(typeMappingSource, sqlExpressionFactory)
     };
 }
 public SqliteNetTopologySuiteMemberTranslatorPlugin(
     ISqlExpressionFactory sqlExpressionFactory)
 {
     Translators = new IMemberTranslator[]
     {
         new SqliteGeometryMemberTranslator(sqlExpressionFactory),
         new SqliteGeometryCollectionMemberTranslator(sqlExpressionFactory),
         new SqliteLineStringMemberTranslator(sqlExpressionFactory),
         new SqliteMultiLineStringMemberTranslator(sqlExpressionFactory),
         new SqlitePointMemberTranslator(sqlExpressionFactory),
         new SqlitePolygonMemberTranslator(sqlExpressionFactory)
     };
 }
Пример #19
0
 /// <summary>
 ///     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.
 /// </summary>
 public SqlServerNetTopologySuiteMemberTranslatorPlugin(IRelationalTypeMappingSource typeMappingSource)
 {
     Translators = new IMemberTranslator[]
     {
         new SqlServerCurveMemberTranslator(typeMappingSource),
         new SqlServerGeometryMemberTranslator(typeMappingSource),
         new SqlServerGeometryCollectionMemberTranslator(),
         new SqlServerLineStringMemberTranslator(),
         new SqlServerMultiCurveMemberTranslator(),
         new SqlServerPointMemberTranslator(),
         new SqlServerPolygonMemberTranslator(typeMappingSource)
     };
 }
        public MemberInfo TranslateMember(Type targetType, MemberInfo memberInfo)
        {
            if (memberInfo.DeclaringType.Namespace != FromNamespace)
            {
                return(memberInfo);
            }

            IMemberTranslator translator = memberInfo.GetCustomTranslator() ?? MemberTranslator;

            translator.Verifier   = StructureVerifier;
            translator.TargetType = targetType;

            return(translator.Translate(memberInfo));
        }
Пример #21
0
        public void TranslateMemberDoesNotUseMemberTranslatorIfMemberDeclaringTypeIsNotWithinFromNamespace()
        {
            PropertyInfo propertyToVerify = typeof(string).GetProperty("Length");

            IMemberTranslator memberTranslator = Substitute.For <IMemberTranslator>();
            StructureService  service          = new StructureService("TestTools_Tests.Structure", "TestTools_Tests.Structure")
            {
                MemberTranslator = memberTranslator
            };

            service.TranslateMember(propertyToVerify);

            memberTranslator.DidNotReceive().Translate(propertyToVerify);
        }
 /// <summary>
 ///     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.
 /// </summary>
 public MySqlNetTopologySuiteMemberTranslatorPlugin(
     IRelationalTypeMappingSource typeMappingSource,
     ISqlExpressionFactory sqlExpressionFactory,
     IMySqlOptions options)
 {
     Translators = new IMemberTranslator[]
     {
         new MySqlGeometryMemberTranslator(typeMappingSource, sqlExpressionFactory),
         new MySqlGeometryCollectionMemberTranslator(sqlExpressionFactory),
         new MySqlLineStringMemberTranslator(typeMappingSource, sqlExpressionFactory, options),
         new MySqlMultiLineStringMemberTranslator(sqlExpressionFactory),
         new MySqlPointMemberTranslator(sqlExpressionFactory),
         new MySqlPolygonMemberTranslator(typeMappingSource, sqlExpressionFactory)
     };
 }
        /// <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;
        }
        /// <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;
        }
        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 MySqlJsonNewtonsoftMemberTranslatorPlugin(
            IRelationalTypeMappingSource typeMappingSource,
            ISqlExpressionFactory sqlExpressionFactory,
            IMySqlJsonPocoTranslator jsonPocoTranslator)
        {
            var mySqlSqlExpressionFactory = (MySqlSqlExpressionFactory)sqlExpressionFactory;
            var mySqlJsonPocoTranslator   = (MySqlJsonPocoTranslator)jsonPocoTranslator;

            Translators = new IMemberTranslator[]
            {
                new MySqlJsonNewtonsoftDomTranslator(
                    mySqlSqlExpressionFactory,
                    typeMappingSource,
                    mySqlJsonPocoTranslator),
                jsonPocoTranslator,
            };
        }
        protected RelationalDatabase(
            [NotNull] IModel model,
            [NotNull] IEntityKeyFactorySource entityKeyFactorySource,
            [NotNull] IEntityMaterializerSource entityMaterializerSource,
            [NotNull] IClrAccessorSource <IClrPropertyGetter> clrPropertyGetterSource,
            [NotNull] IRelationalConnection connection,
            [NotNull] ICommandBatchPreparer batchPreparer,
            [NotNull] IBatchExecutor batchExecutor,
            [NotNull] IDbContextOptions options,
            [NotNull] ILoggerFactory loggerFactory,
            [NotNull] IRelationalValueBufferFactoryFactory valueBufferFactoryFactory,
            [NotNull] IMethodCallTranslator compositeMethodCallTranslator,
            [NotNull] IMemberTranslator compositeMemberTranslator,
            [NotNull] IRelationalTypeMapper typeMapper,
            [NotNull] IRelationalMetadataExtensionProvider relationalExtensions)
            : base(model, loggerFactory)
        {
            Check.NotNull(entityKeyFactorySource, nameof(entityKeyFactorySource));
            Check.NotNull(entityMaterializerSource, nameof(entityMaterializerSource));
            Check.NotNull(clrPropertyGetterSource, nameof(clrPropertyGetterSource));
            Check.NotNull(connection, nameof(connection));
            Check.NotNull(batchPreparer, nameof(batchPreparer));
            Check.NotNull(batchExecutor, nameof(batchExecutor));
            Check.NotNull(options, nameof(options));
            Check.NotNull(valueBufferFactoryFactory, nameof(valueBufferFactoryFactory));
            Check.NotNull(compositeMethodCallTranslator, nameof(compositeMethodCallTranslator));
            Check.NotNull(compositeMemberTranslator, nameof(compositeMemberTranslator));
            Check.NotNull(typeMapper, nameof(typeMapper));
            Check.NotNull(relationalExtensions, nameof(relationalExtensions));

            EntityKeyFactorySource   = entityKeyFactorySource;
            EntityMaterializerSource = entityMaterializerSource;
            ClrPropertyGetterSource  = clrPropertyGetterSource;

            _batchPreparer = batchPreparer;
            _batchExecutor = batchExecutor;
            _connection    = connection;
            _options       = options;
            _compositeMethodCallTranslator = compositeMethodCallTranslator;
            _compositeMemberTranslator     = compositeMemberTranslator;

            TypeMapper = typeMapper;
            ValueBufferFactoryFactory = valueBufferFactoryFactory;
            RelationalExtensions      = relationalExtensions;
        }
        /// <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;
        }
Пример #30
0
 protected virtual RelationalQueryCompilationContext CreateQueryCompilationContext(
     [NotNull] ILinqOperatorProvider linqOperatorProvider,
     [NotNull] IResultOperatorHandler resultOperatorHandler,
     [NotNull] IQueryMethodProvider queryMethodProvider,
     [NotNull] IMethodCallTranslator compositeMethodCallTranslator,
     [NotNull] IMemberTranslator compositeMemberTranslator)
 => new RelationalQueryCompilationContext(
     Model,
     Logger,
     Check.NotNull(linqOperatorProvider, nameof(linqOperatorProvider)),
     Check.NotNull(resultOperatorHandler, nameof(resultOperatorHandler)),
     EntityMaterializerSource,
     EntityKeyFactorySource,
     ClrPropertyGetterSource,
     Check.NotNull(queryMethodProvider, nameof(queryMethodProvider)),
     Check.NotNull(compositeMethodCallTranslator, nameof(compositeMethodCallTranslator)),
     Check.NotNull(compositeMemberTranslator, nameof(compositeMemberTranslator)),
     ValueBufferFactoryFactory,
     TypeMapper);
Пример #31
0
 protected override RelationalQueryCompilationContext CreateQueryCompilationContext(
     ILinqOperatorProvider linqOperatorProvider,
     IResultOperatorHandler resultOperatorHandler,
     IQueryMethodProvider queryMethodProvider,
     IMethodCallTranslator compositeMethodCallTranslator,
     IMemberTranslator compositeMemberTranslator) =>
 new SqliteQueryCompilationContext(
     Model,
     Logger,
     linqOperatorProvider,
     resultOperatorHandler,
     EntityMaterializerSource,
     ClrPropertyGetterSource,
     EntityKeyFactorySource,
     queryMethodProvider,
     compositeMethodCallTranslator,
     compositeMemberTranslator,
     ValueBufferFactoryFactory,
     TypeMapper);
Пример #32
0
        public void TranslateMemberUsesMemberTranslatorIfNoCustomTranslatorIsDefinedOnMember()
        {
            Type      typeToTranslate  = typeof(TestTypeWithoutCustomTranslator);
            FieldInfo fieldToTranslate = typeToTranslate.GetField("FieldWithoutCustomTranslator");

            ITypeTranslator typeTranslator = Substitute.For <ITypeTranslator>();

            typeTranslator.Translate(typeToTranslate).Returns(typeToTranslate);
            IMemberTranslator memberTranslator = Substitute.For <IMemberTranslator>();
            StructureService  service          = new StructureService("TestTools_Tests.Structure", "TestTools_Tests.Structure")
            {
                TypeTranslator   = typeTranslator,
                MemberTranslator = memberTranslator
            };

            service.TranslateMember(fieldToTranslate);

            memberTranslator.Received().Translate(fieldToTranslate);
        }
Пример #33
0
 protected override RelationalQueryCompilationContext CreateQueryCompilationContext(
     ILinqOperatorProvider linqOperatorProvider,
     IResultOperatorHandler resultOperatorHandler,
     IQueryMethodProvider queryMethodProvider,
     IMethodCallTranslator compositeMethodCallTranslator,
     IMemberTranslator compositeMemberTranslator) =>
         new SqliteQueryCompilationContext(
             Model,
             Logger,
             linqOperatorProvider,
             resultOperatorHandler,
             EntityMaterializerSource,
             ClrPropertyGetterSource,
             EntityKeyFactorySource,
             queryMethodProvider,
             compositeMethodCallTranslator,
             compositeMemberTranslator,
             ValueBufferFactoryFactory,
             TypeMapper);
 public FakeQueryCompilationContext(
     IModel model,
     ILogger logger,
     ILinqOperatorProvider linqOperatorProvider,
     IResultOperatorHandler resultOperatorHandler,
     IEntityMaterializerSource entityMaterializerSource,
     IClrAccessorSource<IClrPropertyGetter> clrPropertyGetterSource,
     IEntityKeyFactorySource entityKeyFactorySource,
     IQueryMethodProvider queryMethodProvider,
     IMethodCallTranslator compositeMethodCallTranslator,
     IMemberTranslator compositeMemberTranslator,
     IRelationalValueBufferFactoryFactory valueBufferFactoryFactory,
     IRelationalTypeMapper typeMapper,
     IRelationalMetadataExtensionProvider relationalExtensions)
     : base(
         model,
         logger,
         linqOperatorProvider,
         resultOperatorHandler,
         entityMaterializerSource,
         entityKeyFactorySource,
         clrPropertyGetterSource,
         queryMethodProvider,
         compositeMethodCallTranslator,
         compositeMemberTranslator,
         valueBufferFactoryFactory,
         typeMapper,
         relationalExtensions)
 {
 }
 public FakeRelationalDatabase(
     IModel model,
     IEntityKeyFactorySource entityKeyFactorySource,
     IEntityMaterializerSource entityMaterializerSource,
     IClrAccessorSource<IClrPropertyGetter> clrPropertyGetterSource,
     IRelationalConnection connection,
     ICommandBatchPreparer batchPreparer,
     IBatchExecutor batchExecutor,
     IDbContextOptions options,
     ILoggerFactory loggerFactory,
     IRelationalValueBufferFactoryFactory valueBufferFactoryFactory,
     IMethodCallTranslator compositeMethodCallTranslator,
     IMemberTranslator compositeMemberTranslator,
     IRelationalTypeMapper typeMapper)
     : base(
           model, 
           entityKeyFactorySource, 
           entityMaterializerSource,
           clrPropertyGetterSource,
           connection, 
           batchPreparer, 
           batchExecutor, 
           options, 
           loggerFactory,
           valueBufferFactoryFactory,
           compositeMethodCallTranslator,
           compositeMemberTranslator,
           typeMapper)
 {
 }