コード例 #1
0
 public ConcreteMigrationSqlGenerator(
     IUpdateSqlGenerator sqlGenerator,
     IRelationalTypeMapper typeMapper,
     IRelationalMetadataExtensionProvider annotations)
     : base(sqlGenerator, typeMapper, annotations)
 {
 }
コード例 #2
0
 public TestSqlServerModificationCommandBatch(
     ISqlServerSqlGenerator sqlGenerator,
     IRelationalMetadataExtensionProvider metadataExtensionProvider,
     int?maxBatchSize)
     : base(sqlGenerator, metadataExtensionProvider, maxBatchSize)
 {
 }
コード例 #3
0
 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)
 {
 }
コード例 #4
0
 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)
 {
 }
コード例 #5
0
        public MigrationOperationFactory(
            [NotNull] IRelationalMetadataExtensionProvider extensionProvider)
        {
            Check.NotNull(extensionProvider, "extensionProvider");

            _extensionProvider = extensionProvider;
        }
コード例 #6
0
        protected ReaderModificationCommandBatch(
            [NotNull] ISqlGenerator sqlGenerator,
            [NotNull] IRelationalMetadataExtensionProvider metadataExtensionProvider)
            : base(sqlGenerator)
        {
            Check.NotNull(metadataExtensionProvider, nameof(metadataExtensionProvider));

            _metadataExtensionProvider = metadataExtensionProvider;
        }
コード例 #7
0
        public EntityTypeCodeGeneratorHelper([NotNull] EntityTypeGeneratorModel generatorModel,
                                             [NotNull] IRelationalMetadataExtensionProvider extensionsProvider)
        {
            Check.NotNull(generatorModel, nameof(generatorModel));
            Check.NotNull(extensionsProvider, nameof(extensionsProvider));

            GeneratorModel     = generatorModel;
            ExtensionsProvider = extensionsProvider;
        }
コード例 #8
0
        protected DbContextCodeGeneratorHelper([NotNull] DbContextGeneratorModel generatorModel,
                                               IRelationalMetadataExtensionProvider extensionsProvider)
        {
            Check.NotNull(generatorModel, nameof(generatorModel));
            Check.NotNull(extensionsProvider, nameof(extensionsProvider));

            GeneratorModel     = generatorModel;
            ExtensionsProvider = extensionsProvider;
        }
コード例 #9
0
        public RelationalValueGeneratorSelector(
            [NotNull] IValueGeneratorCache cache,
            [NotNull] IRelationalMetadataExtensionProvider relationalExtensions)
            : base(cache)
        {
            Check.NotNull(relationalExtensions, nameof(relationalExtensions));

            RelationalExtensions = relationalExtensions;
        }
コード例 #10
0
        protected DbContextCodeGeneratorHelper([NotNull] DbContextGeneratorModel generatorModel,
            IRelationalMetadataExtensionProvider extensionsProvider)
        {
            Check.NotNull(generatorModel, nameof(generatorModel));
            Check.NotNull(extensionsProvider, nameof(extensionsProvider));

            GeneratorModel = generatorModel;
            ExtensionsProvider = extensionsProvider;
        }
コード例 #11
0
        public RelationalModelValidator(
            [NotNull] ILoggerFactory loggerFactory,
            [NotNull] IRelationalMetadataExtensionProvider relationalExtensions)
            : base(loggerFactory)
        {
            Check.NotNull(relationalExtensions, nameof(relationalExtensions));

            _relationalExtensions = relationalExtensions;
        }
コード例 #12
0
        protected ReaderModificationCommandBatch(
            [NotNull] ISqlGenerator sqlGenerator,
            [NotNull] IRelationalMetadataExtensionProvider metadataExtensionProvider)
            : base(sqlGenerator)
        {
            Check.NotNull(metadataExtensionProvider, nameof(metadataExtensionProvider));

            _metadataExtensionProvider = metadataExtensionProvider;
        }
コード例 #13
0
        public RelationalModelValidator(
            [NotNull] ILoggerFactory loggerFactory,
            [NotNull] IRelationalMetadataExtensionProvider relationalExtensions)
            : base(loggerFactory)
        {
            Check.NotNull(relationalExtensions, nameof(relationalExtensions));

            _relationalExtensions = relationalExtensions;
        }
コード例 #14
0
        protected MigrationOperationSqlGenerator(
            [NotNull] IRelationalMetadataExtensionProvider extensionProvider,
            [NotNull] RelationalTypeMapper typeMapper)
        {
            Check.NotNull(extensionProvider, "extensionProvider");
            Check.NotNull(typeMapper, "typeMapper");

            _extensionProvider = extensionProvider;
            _typeMapper        = typeMapper;
        }
コード例 #15
0
        public MigrationsModelDiffer(
            [NotNull] IRelationalMetadataExtensionProvider annotations,
            [NotNull] IMigrationsAnnotationProvider migrationsAnnotations)
        {
            Check.NotNull(annotations, nameof(annotations));
            Check.NotNull(migrationsAnnotations, nameof(migrationsAnnotations));

            Annotations           = annotations;
            MigrationsAnnotations = migrationsAnnotations;
        }
コード例 #16
0
            public override ModificationCommandBatch Create(
                IDbContextOptions options,
                IRelationalMetadataExtensionProvider metadataExtensionProvider)
            {
                var optionsExtension = options.Extensions.OfType <SqlServerOptionsExtension>().FirstOrDefault();

                var maxBatchSize = optionsExtension?.MaxBatchSize;

                return(new TestSqlServerModificationCommandBatch(
                           (ISqlServerUpdateSqlGenerator)UpdateSqlGenerator,
                           maxBatchSize));
            }
コード例 #17
0
        public ModelDiffer(
            [NotNull] IRelationalTypeMapper typeMapper,
            [NotNull] IRelationalMetadataExtensionProvider metadataExtensions,
            [NotNull] IMigrationAnnotationProvider annotations)
        {
            Check.NotNull(typeMapper, nameof(typeMapper));
            Check.NotNull(metadataExtensions, nameof(metadataExtensions));
            Check.NotNull(annotations, nameof(annotations));

            TypeMapper         = typeMapper;
            MetadataExtensions = metadataExtensions;
            Annotations        = annotations;
        }
コード例 #18
0
        protected MigrationsSqlGenerator(
            [NotNull] IUpdateSqlGenerator sql,
            [NotNull] IRelationalTypeMapper typeMapper,
            [NotNull] IRelationalMetadataExtensionProvider annotations)
        {
            Check.NotNull(sql, nameof(sql));
            Check.NotNull(typeMapper, nameof(typeMapper));
            Check.NotNull(annotations, nameof(annotations));

            Sql = sql;
            _typeMapper = typeMapper;
            _annotations = annotations;
        }
コード例 #19
0
        public SqlServerValueGeneratorSelector(
            [NotNull] ISqlServerValueGeneratorCache cache,
            [NotNull] ISqlServerSequenceValueGeneratorFactory sequenceFactory,
            [NotNull] ISqlServerConnection connection,
            [NotNull] IRelationalMetadataExtensionProvider relationalExtensions)
            : base(cache, relationalExtensions)
        {
            Check.NotNull(sequenceFactory, nameof(sequenceFactory));
            Check.NotNull(connection, nameof(connection));

            _sequenceFactory = sequenceFactory;
            _connection      = connection;
        }
コード例 #20
0
        protected MigrationsSqlGenerator(
            [NotNull] IUpdateSqlGenerator sql,
            [NotNull] IRelationalTypeMapper typeMapper,
            [NotNull] IRelationalMetadataExtensionProvider annotations)
        {
            Check.NotNull(sql, nameof(sql));
            Check.NotNull(typeMapper, nameof(typeMapper));
            Check.NotNull(annotations, nameof(annotations));

            Sql          = sql;
            _typeMapper  = typeMapper;
            _annotations = annotations;
        }
コード例 #21
0
        public MigrationOperationProcessor(
            [NotNull] IRelationalMetadataExtensionProvider extensionProvider,
            [NotNull] RelationalTypeMapper typeMapper,
            [NotNull] MigrationOperationFactory operationFactory)
        {
            Check.NotNull(extensionProvider, "extensionProvider");
            Check.NotNull(typeMapper, "typeMapper");
            Check.NotNull(operationFactory, "operationFactory");

            _extensionProvider = extensionProvider;
            _typeMapper        = typeMapper;
            _operationFactory  = operationFactory;
        }
コード例 #22
0
 public TestCommandBatchPreparer(
     IModificationCommandBatchFactory modificationCommandBatchFactory,
     IParameterNameGeneratorFactory parameterNameGeneratorFactory,
     IComparer <ModificationCommand> modificationCommandComparer,
     IRelationalValueBufferFactoryFactory valueBufferFactoryFactory,
     IRelationalMetadataExtensionProvider metadataExtensionProvider)
     : base(
         modificationCommandBatchFactory,
         parameterNameGeneratorFactory,
         modificationCommandComparer,
         valueBufferFactoryFactory,
         metadataExtensionProvider)
 {
 }
コード例 #23
0
        public HistoryRepository(
            [NotNull] IDatabaseCreator databaseCreator,
            [NotNull] ISqlStatementExecutor executor,
            [NotNull] IRelationalConnection connection,
            [NotNull] IDbContextOptions options,
            [NotNull] IMigrationsModelDiffer modelDiffer,
            [NotNull] IMigrationsSqlGenerator migrationsSqlGenerator,
            [NotNull] IRelationalMetadataExtensionProvider annotations,
            [NotNull] IUpdateSqlGenerator sql)
        {
            Check.NotNull(databaseCreator, nameof(databaseCreator));
            Check.NotNull(executor, nameof(executor));
            Check.NotNull(connection, nameof(connection));
            Check.NotNull(options, nameof(options));
            Check.NotNull(modelDiffer, nameof(modelDiffer));
            Check.NotNull(migrationsSqlGenerator, nameof(migrationsSqlGenerator));
            Check.NotNull(annotations, nameof(annotations));
            Check.NotNull(sql, nameof(sql));

            _databaseCreator        = (IRelationalDatabaseCreator)databaseCreator;
            _executor               = executor;
            _connection             = connection;
            _modelDiffer            = modelDiffer;
            _migrationsSqlGenerator = migrationsSqlGenerator;
            Sql = sql;

            var relationalOptions = RelationalOptionsExtension.Extract(options);

            TableName   = relationalOptions?.MigrationsHistoryTableName ?? DefaultTableName;
            TableSchema = relationalOptions.MigrationsHistoryTableSchema;
            _model      = new LazyRef <IModel>(
                () =>
            {
                var modelBuilder = new ModelBuilder(new ConventionSet());
                modelBuilder.Entity <HistoryRow>(
                    x =>
                {
                    ConfigureTable(x);
                    x.ToTable(TableName, TableSchema);
                });

                return(modelBuilder.Model);
            });
            var entityType = new LazyRef <IEntityType>(() => _model.Value.GetEntityType(typeof(HistoryRow)));

            _migrationIdColumnName = new LazyRef <string>(
                () => annotations.For(entityType.Value.FindProperty(nameof(HistoryRow.MigrationId))).ColumnName);
            _productVersionColumnName = new LazyRef <string>(
                () => annotations.For(entityType.Value.FindProperty(nameof(HistoryRow.ProductVersion))).ColumnName);
        }
コード例 #24
0
        public SqlServerModificationCommandBatch(
            [NotNull] ISqlServerSqlGenerator sqlGenerator,
            [NotNull] IRelationalMetadataExtensionProvider metadataExtensionProvider,
            [CanBeNull] int?maxBatchSize)
            : base(sqlGenerator, metadataExtensionProvider)
        {
            if (maxBatchSize.HasValue &&
                maxBatchSize.Value <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(maxBatchSize), RelationalStrings.InvalidMaxBatchSize);
            }

            _maxBatchSize = Math.Min(maxBatchSize ?? Int32.MaxValue, MaxRowCount);
        }
        public override ModificationCommandBatch Create(
            IEntityOptions options,
            IRelationalMetadataExtensionProvider metadataExtensionProvider)
        {
            Check.NotNull(options, nameof(options));
            Check.NotNull(metadataExtensionProvider, nameof(metadataExtensionProvider));

            var optionsExtension = options.Extensions.OfType<SqlServerOptionsExtension>().FirstOrDefault();

            var maxBatchSize = optionsExtension?.MaxBatchSize;

            return new SqlServerModificationCommandBatch(
                (ISqlServerSqlGenerator)SqlGenerator,
                metadataExtensionProvider,
                maxBatchSize);
        }
        public override ModificationCommandBatch Create(
            IEntityOptions options,
            IRelationalMetadataExtensionProvider metadataExtensionProvider)
        {
            Check.NotNull(options, nameof(options));
            Check.NotNull(metadataExtensionProvider, nameof(metadataExtensionProvider));

            var optionsExtension = options.Extensions.OfType <SqlServerOptionsExtension>().FirstOrDefault();

            var maxBatchSize = optionsExtension?.MaxBatchSize;

            return(new SqlServerModificationCommandBatch(
                       (ISqlServerSqlGenerator)SqlGenerator,
                       metadataExtensionProvider,
                       maxBatchSize));
        }
コード例 #27
0
        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;
        }
コード例 #28
0
        public CommandBatchPreparer(
            [NotNull] IModificationCommandBatchFactory modificationCommandBatchFactory,
            [NotNull] IParameterNameGeneratorFactory parameterNameGeneratorFactory,
            [NotNull] IComparer <ModificationCommand> modificationCommandComparer,
            [NotNull] IRelationalValueBufferFactoryFactory valueBufferFactoryFactory,
            [NotNull] IRelationalMetadataExtensionProvider metadataExtensions)
        {
            Check.NotNull(modificationCommandBatchFactory, nameof(modificationCommandBatchFactory));
            Check.NotNull(parameterNameGeneratorFactory, nameof(parameterNameGeneratorFactory));
            Check.NotNull(modificationCommandComparer, nameof(modificationCommandComparer));
            Check.NotNull(valueBufferFactoryFactory, nameof(valueBufferFactoryFactory));
            Check.NotNull(metadataExtensions, nameof(metadataExtensions));

            _modificationCommandBatchFactory = modificationCommandBatchFactory;
            _parameterNameGeneratorFactory   = parameterNameGeneratorFactory;
            _modificationCommandComparer     = modificationCommandComparer;
            _valueBufferFactoryFactory       = valueBufferFactoryFactory;
            _metadataExtensionProvider       = metadataExtensions;
        }
コード例 #29
0
        protected 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,
            [NotNull] IRelationalMetadataExtensionProvider relationalExtensions)
            : 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));
            Check.NotNull(relationalExtensions, nameof(relationalExtensions));

            QueryMethodProvider           = queryMethodProvider;
            CompositeMethodCallTranslator = compositeMethodCallTranslator;
            CompositeMemberTranslator     = compositeMemberTranslator;
            ValueBufferFactoryFactory     = valueBufferFactoryFactory;
            TypeMapper           = typeMapper;
            RelationalExtensions = relationalExtensions;
        }
コード例 #30
0
        public virtual Expression CreateMaterializer(
            [NotNull] IEntityType entityType,
            [NotNull] SelectExpression selectExpression,
            [NotNull] Func <IProperty, SelectExpression, int> projectionAdder,
            [NotNull] IRelationalMetadataExtensionProvider relationalExtensions,
            [CanBeNull] IQuerySource querySource)
        {
            Check.NotNull(entityType, nameof(entityType));
            Check.NotNull(selectExpression, nameof(selectExpression));
            Check.NotNull(projectionAdder, nameof(projectionAdder));

            var valueBufferParameter
                = Expression.Parameter(typeof(ValueBuffer));

            var concreteEntityTypes
                = entityType.GetConcreteTypesInHierarchy().ToArray();

            var indexMap      = new int[concreteEntityTypes[0].GetProperties().Count()];
            var propertyIndex = 0;

            foreach (var property in concreteEntityTypes[0].GetProperties())
            {
                indexMap[propertyIndex++]
                    = projectionAdder(property, selectExpression);
            }

            var materializer
                = _entityMaterializerSource
                  .CreateMaterializeExpression(
                      concreteEntityTypes[0], valueBufferParameter, indexMap);

            if (concreteEntityTypes.Length == 1 &&
                concreteEntityTypes[0].RootType() == concreteEntityTypes[0])
            {
                return(Expression.Lambda <Func <ValueBuffer, object> >(materializer, valueBufferParameter));
            }

            var discriminatorProperty = relationalExtensions.For(concreteEntityTypes[0]).DiscriminatorProperty;

            var discriminatorColumn
                = selectExpression.Projection
                  .OfType <AliasExpression>()
                  .Single(c => c.TryGetColumnExpression()?.Property == discriminatorProperty);

            var firstDiscriminatorValue
                = Expression.Constant(
                      relationalExtensions.For(concreteEntityTypes[0]).DiscriminatorValue);

            var discriminatorPredicate
                = Expression.Equal(discriminatorColumn, firstDiscriminatorValue);

            if (concreteEntityTypes.Length == 1)
            {
                selectExpression.Predicate
                    = new DiscriminatorPredicateExpression(discriminatorPredicate, querySource);

                return(Expression.Lambda <Func <ValueBuffer, object> >(materializer, valueBufferParameter));
            }

            var discriminatorValueVariable
                = Expression.Variable(discriminatorProperty.ClrType);

            var returnLabelTarget = Expression.Label(typeof(object));

            var blockExpressions
                = new Expression[]
                {
                Expression.Assign(
                    discriminatorValueVariable,
                    _entityMaterializerSource
                    .CreateReadValueExpression(
                        valueBufferParameter,
                        discriminatorProperty.ClrType,
                        discriminatorProperty.Index)),
                Expression.IfThenElse(
                    Expression.Equal(discriminatorValueVariable, firstDiscriminatorValue),
                    Expression.Return(returnLabelTarget, materializer),
                    Expression.Throw(
                        Expression.Call(
                            _createUnableToDiscriminateException,
                            Expression.Constant(concreteEntityTypes[0])))),
                Expression.Label(
                    returnLabelTarget,
                    Expression.Default(returnLabelTarget.Type))
                };

            foreach (var concreteEntityType in concreteEntityTypes.Skip(1))
            {
                indexMap      = new int[concreteEntityType.GetProperties().Count()];
                propertyIndex = 0;

                foreach (var property in concreteEntityType.GetProperties())
                {
                    indexMap[propertyIndex++]
                        = projectionAdder(property, selectExpression);
                }

                var discriminatorValue
                    = Expression.Constant(
                          relationalExtensions.For(concreteEntityType).DiscriminatorValue);

                materializer
                    = _entityMaterializerSource
                      .CreateMaterializeExpression(concreteEntityType, valueBufferParameter, indexMap);

                blockExpressions[1]
                    = Expression.IfThenElse(
                          Expression.Equal(discriminatorValueVariable, discriminatorValue),
                          Expression.Return(returnLabelTarget, materializer),
                          blockExpressions[1]);

                discriminatorPredicate
                    = Expression.OrElse(
                          Expression.Equal(discriminatorColumn, discriminatorValue),
                          discriminatorPredicate);
            }

            selectExpression.Predicate
                = new DiscriminatorPredicateExpression(discriminatorPredicate, querySource);

            return(Expression.Lambda <Func <ValueBuffer, object> >(
                       Expression.Block(new[] { discriminatorValueVariable }, blockExpressions),
                       valueBufferParameter));
        }
コード例 #31
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,
     IRelationalMetadataExtensionProvider relationalExtensions)
     : base(
         model,
         entityKeyFactorySource,
         entityMaterializerSource,
         clrPropertyGetterSource,
         connection,
         batchPreparer,
         batchExecutor,
         options,
         loggerFactory,
         valueBufferFactoryFactory,
         compositeMethodCallTranslator,
         compositeMemberTranslator,
         typeMapper,
         relationalExtensions)
 {
 }
コード例 #32
0
 public override ModificationCommandBatch Create(
     IDbContextOptions options,
     IRelationalMetadataExtensionProvider metadataExtensionProvider)
 {
     return new SingularModificationCommandBatch(UpdateSqlGenerator);
 }
コード例 #33
0
 public TestCommandBatchPreparer(
     IModificationCommandBatchFactory modificationCommandBatchFactory,
     IParameterNameGeneratorFactory parameterNameGeneratorFactory,
     IComparer<ModificationCommand> modificationCommandComparer,
     IRelationalValueBufferFactoryFactory valueBufferFactoryFactory,
     IRelationalMetadataExtensionProvider metadataExtensionProvider)
     : base(
           modificationCommandBatchFactory,
           parameterNameGeneratorFactory,
           modificationCommandComparer,
           valueBufferFactoryFactory,
           metadataExtensionProvider)
 {
 }
コード例 #34
0
 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)
 {
 }
コード例 #35
0
 public abstract ModificationCommandBatch Create(
     IEntityOptions options,
     IRelationalMetadataExtensionProvider metadataExtensionProvider);
コード例 #36
0
        public RelationalNameBuilder([NotNull] IRelationalMetadataExtensionProvider extensionProvider)
        {
            Check.NotNull(extensionProvider, "extensionProvider");

            _extensionProvider = extensionProvider;
        }
コード例 #37
0
 public override ModificationCommandBatch Create(
     IEntityOptions options,
     IRelationalMetadataExtensionProvider metadataExtensionProvider)
 {
     return new SingularModificationCommandBatch(SqlGenerator, metadataExtensionProvider);
 }
 public override ModificationCommandBatch Create(
     IEntityOptions options,
     IRelationalMetadataExtensionProvider metadataExtensionProvider)
 {
     return(new SingularModificationCommandBatch(SqlGenerator, metadataExtensionProvider));
 }
コード例 #39
0
 public override ModificationCommandBatch Create(
     IDbContextOptions options,
     IRelationalMetadataExtensionProvider metadataExtensionProvider)
 {
     return(new SingularModificationCommandBatch(UpdateSqlGenerator));
 }
コード例 #40
0
 public SqlServerDbContextCodeGeneratorHelper(
     [NotNull] DbContextGeneratorModel generatorModel,
     [NotNull] IRelationalMetadataExtensionProvider extensionsProvider)
     : base(generatorModel, extensionsProvider)
 {
 }
コード例 #41
0
 public override ModificationCommandBatch Create(
     IDbContextOptions options,
     IRelationalMetadataExtensionProvider metadataExtensionProvider)
 => new NpgsqlModificationCommandBatch(UpdateSqlGenerator);
コード例 #42
0
 public ConcreteMigrationSqlGenerator(
     IUpdateSqlGenerator sqlGenerator,
     IRelationalTypeMapper typeMapper,
     IRelationalMetadataExtensionProvider annotations)
     : base(sqlGenerator, typeMapper, annotations)
 {
 }