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; }
public NpgsqlNodaTimeMemberTranslatorPlugin([NotNull] ISqlExpressionFactory sqlExpressionFactory) { Translators = new IMemberTranslator[] { new NpgsqlNodaTimeMemberTranslator(sqlExpressionFactory), }; }
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; }
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); }
/// <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);
/// <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) }; }
/// <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)); }
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; }
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);
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 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); }
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) { }