Пример #1
0
 public TestDatabaseCreator(
     RelationalDatabaseCreatorDependencies dependencies,
     JetRelationalConnection relationalConnection,
     IRawSqlCommandBuilder rawSqlCommandBuilder)
     : base(dependencies, relationalConnection, rawSqlCommandBuilder)
 {
 }
Пример #2
0
 public OracleRelationalConnection(
     [NotNull] RelationalConnectionDependencies dependencies,
     [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder)
     : base(dependencies)
 {
     _rawSqlCommandBuilder = rawSqlCommandBuilder;
 }
Пример #3
0
        public RelationalCommandRunnerTestsBase(string providerName)
        {
            _model = new Model();
            AddEntity <TestEntity>(_model);
            AddEntity <TestEntityWithNullableKey>(_model);

            var dbProvider = Substitute.For <IDatabaseProvider>();

            dbProvider.Name.Returns(providerName);

            var services = new ServiceCollection();

            services.AddSingleton <IUpsertCommandRunner, TRunner>();
            services.AddSingleton <IModel>(_model);
            services.AddSingleton(dbProvider);
            services.AddSingleton(Substitute.For <IRelationalTypeMappingSource>());
            var serviceProvider = services.BuildServiceProvider();

            _dbContext = Substitute.For <DbContext, IInfrastructure <IServiceProvider> >();
            ((IInfrastructure <IServiceProvider>)_dbContext).Instance.Returns(serviceProvider);

            var relationalConnection = Substitute.For <IRelationalConnection>();

            relationalConnection.DbConnection.Returns(Substitute.For <DbConnection>());

            _rawSqlBuilder = Substitute.For <IRawSqlCommandBuilder>();
            _rawSqlBuilder.Build(default, default).ReturnsForAnyArgs(
        /// <summary>
        ///     <para>
        ///         Creates the service dependencies parameter object for a <see cref="HistoryRepository" />.
        ///     </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>
        ///     <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>
        /// </summary>
        /// <param name="databaseCreator"> The database creator. </param>
        /// <param name="rawSqlCommandBuilder"> A command builder for building raw SQL commands. </param>
        /// <param name="connection"> The connection to the database. </param>
        /// <param name="options"> Options for the current context instance. </param>
        /// <param name="modelDiffer"> The model differ. </param>
        /// <param name="migrationsSqlGenerator"> The SQL generator for Migrations operations. </param>
        /// <param name="sqlGenerationHelper"> Helpers for generating update SQL. </param>
        /// <param name="conventionSetBuilder"> The convention set to use when creating the model. </param>
        /// <param name="typeMappingSource"> The type mapper. </param>
        /// <param name="modelLogger"> The logger for model building events. </param>
        public HistoryRepositoryDependencies(
            [NotNull] IRelationalDatabaseCreator databaseCreator,
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
            [NotNull] IRelationalConnection connection,
            [NotNull] IDbContextOptions options,
            [NotNull] IMigrationsModelDiffer modelDiffer,
            [NotNull] IMigrationsSqlGenerator migrationsSqlGenerator,
            [NotNull] ISqlGenerationHelper sqlGenerationHelper,
            [NotNull] IConventionSetBuilder conventionSetBuilder,
            [NotNull] IRelationalTypeMappingSource typeMappingSource,
            [NotNull] IDiagnosticsLogger <DbLoggerCategory.Model> modelLogger)
        {
            Check.NotNull(databaseCreator, nameof(databaseCreator));
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));
            Check.NotNull(connection, nameof(connection));
            Check.NotNull(options, nameof(options));
            Check.NotNull(modelDiffer, nameof(modelDiffer));
            Check.NotNull(migrationsSqlGenerator, nameof(migrationsSqlGenerator));
            Check.NotNull(sqlGenerationHelper, nameof(sqlGenerationHelper));
            Check.NotNull(conventionSetBuilder, nameof(conventionSetBuilder));
            Check.NotNull(typeMappingSource, nameof(typeMappingSource));
            Check.NotNull(modelLogger, nameof(modelLogger));

            DatabaseCreator      = databaseCreator;
            RawSqlCommandBuilder = rawSqlCommandBuilder;
            Connection           = connection;
            Options                = options;
            ModelDiffer            = modelDiffer;
            MigrationsSqlGenerator = migrationsSqlGenerator;
            SqlGenerationHelper    = sqlGenerationHelper;
            ConventionSetBuilder   = conventionSetBuilder;
            TypeMappingSource      = typeMappingSource;
            ModelLogger            = modelLogger;
        }
Пример #5
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 Migrator(
            [NotNull] IMigrationsAssembly migrationsAssembly,
            [NotNull] IHistoryRepository historyRepository,
            [NotNull] IDatabaseCreator databaseCreator,
            [NotNull] IMigrationsSqlGenerator migrationsSqlGenerator,
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
            [NotNull] IMigrationCommandExecutor migrationCommandExecutor,
            [NotNull] IRelationalConnection connection,
            [NotNull] ISqlGenerationHelper sqlGenerationHelper,
            [NotNull] IInterceptingLogger <LoggerCategory.Migrations> logger,
            [NotNull] IDatabaseProvider databaseProvider)
        {
            Check.NotNull(migrationsAssembly, nameof(migrationsAssembly));
            Check.NotNull(historyRepository, nameof(historyRepository));
            Check.NotNull(databaseCreator, nameof(databaseCreator));
            Check.NotNull(migrationsSqlGenerator, nameof(migrationsSqlGenerator));
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));
            Check.NotNull(migrationCommandExecutor, nameof(migrationCommandExecutor));
            Check.NotNull(connection, nameof(connection));
            Check.NotNull(sqlGenerationHelper, nameof(sqlGenerationHelper));
            Check.NotNull(logger, nameof(logger));
            Check.NotNull(databaseProvider, nameof(databaseProvider));

            _migrationsAssembly       = migrationsAssembly;
            _historyRepository        = historyRepository;
            _databaseCreator          = (IRelationalDatabaseCreator)databaseCreator;
            _migrationsSqlGenerator   = migrationsSqlGenerator;
            _rawSqlCommandBuilder     = rawSqlCommandBuilder;
            _migrationCommandExecutor = migrationCommandExecutor;
            _connection          = connection;
            _sqlGenerationHelper = sqlGenerationHelper;
            _logger         = logger;
            _activeProvider = databaseProvider.InvariantName;
        }
Пример #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PluginMigrator"/> class.
 /// </summary>
 /// <param name="migrationsSqlGenerator">The migrations SQL generator.</param>
 /// <param name="migrationsAssembly">The migrations assembly.</param>
 /// <param name="pluginHistoryRepository">The plugin history repository.</param>
 /// <param name="rawSqlCommandBuilder">The raw SQL command builder.</param>
 /// <param name="migrationCommandExecutor">The migration command executor.</param>
 /// <param name="connection">The connection.</param>
 /// <param name="sqlGenerationHelper">The SQL generation helper.</param>
 /// <param name="currentContext">The current context.</param>
 /// <param name="logger">The logger.</param>
 /// <param name="commandLogger">The command logger.</param>
 /// <param name="databaseProvider">The database provider.</param>
 public PluginMigrator(
     IMigrationsSqlGenerator migrationsSqlGenerator,
     IMigrationsAssembly migrationsAssembly,
     IPluginHistoryRepository pluginHistoryRepository,
     IRawSqlCommandBuilder rawSqlCommandBuilder,
     IMigrationCommandExecutor migrationCommandExecutor,
     IRelationalConnection connection,
     ISqlGenerationHelper sqlGenerationHelper,
     ICurrentDbContext currentContext,
     ILoggerFactory loggerFactory,
     IDiagnosticsLogger <DbLoggerCategory.Database.Command> commandLogger,
     IDatabaseProvider databaseProvider)
 {
     MigrationsSqlGenerator   = migrationsSqlGenerator;
     MigrationsAssembly       = migrationsAssembly;
     PluginHistoryRepository  = pluginHistoryRepository;
     RawSqlCommandBuilder     = rawSqlCommandBuilder;
     MigrationCommandExecutor = migrationCommandExecutor;
     Connection          = connection;
     SqlGenerationHelper = sqlGenerationHelper;
     CurrentContext      = currentContext;
     Logger           = loggerFactory.CreateLogger("BlueBoxMoon.Data.EntityFramework.Migrations.PluginMigrator");
     CommandLogger    = commandLogger;
     DatabaseProvider = databaseProvider;
 }
Пример #7
0
 public MySqlMigrator(
     [NotNull] IMigrationsAssembly migrationsAssembly,
     [NotNull] IHistoryRepository historyRepository,
     [NotNull] IDatabaseCreator databaseCreator,
     [NotNull] IMigrationsSqlGenerator migrationsSqlGenerator,
     [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
     [NotNull] IMigrationCommandExecutor migrationCommandExecutor,
     [NotNull] IRelationalConnection connection,
     [NotNull] ISqlGenerationHelper sqlGenerationHelper,
     [NotNull] ICurrentDbContext currentContext,
     [NotNull] IDiagnosticsLogger <DbLoggerCategory.Migrations> logger,
     [NotNull] IDiagnosticsLogger <DbLoggerCategory.Database.Command> commandLogger,
     [NotNull] IDatabaseProvider databaseProvider)
     : base(
         migrationsAssembly,
         historyRepository,
         databaseCreator,
         migrationsSqlGenerator,
         rawSqlCommandBuilder,
         migrationCommandExecutor,
         connection,
         sqlGenerationHelper,
         currentContext,
         logger,
         commandLogger,
         databaseProvider)
 {
     _migrationsAssembly   = migrationsAssembly;
     _rawSqlCommandBuilder = rawSqlCommandBuilder;
     _currentContext       = currentContext;
     _commandLogger        = commandLogger;
 }
 private static void ExecuteScript(IRelationalConnection connection, IRawSqlCommandBuilder sqlBuilder, string customSql)
 {
     var batches = Regex.Split(
         Regex.Replace(
             customSql,
             @"\\\r?\n",
             string.Empty,
        /// <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 SqliteRelationalConnection(
            [NotNull] RelationalConnectionDependencies dependencies,
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder)
            : base(dependencies)
        {
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));

            _rawSqlCommandBuilder = rawSqlCommandBuilder;

            var optionsExtension = dependencies.ContextOptions.Extensions.OfType <SqliteOptionsExtension>().FirstOrDefault();

            if (optionsExtension != null)
            {
                _loadSpatialite = optionsExtension.LoadSpatialite;
                if (_loadSpatialite)
                {
                    var relationalOptions = RelationalOptionsExtension.Extract(dependencies.ContextOptions);
                    if (relationalOptions.Connection != null)
                    {
                        // TODO: Provide a better hook to do this for both external connections and ones created by EF
                        SpatialiteLoader.Load((SqliteConnection)relationalOptions.Connection);
                    }
                }
            }
        }
Пример #10
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 Migrator(
     IMigrationsAssembly migrationsAssembly,
     IHistoryRepository historyRepository,
     IDatabaseCreator databaseCreator,
     IMigrationsSqlGenerator migrationsSqlGenerator,
     IRawSqlCommandBuilder rawSqlCommandBuilder,
     IMigrationCommandExecutor migrationCommandExecutor,
     IRelationalConnection connection,
     ISqlGenerationHelper sqlGenerationHelper,
     ICurrentDbContext currentContext,
     IModelRuntimeInitializer modelRuntimeInitializer,
     IDiagnosticsLogger <DbLoggerCategory.Migrations> logger,
     IRelationalCommandDiagnosticsLogger commandLogger,
     IDatabaseProvider databaseProvider)
 {
     _migrationsAssembly       = migrationsAssembly;
     _historyRepository        = historyRepository;
     _databaseCreator          = (IRelationalDatabaseCreator)databaseCreator;
     _migrationsSqlGenerator   = migrationsSqlGenerator;
     _rawSqlCommandBuilder     = rawSqlCommandBuilder;
     _migrationCommandExecutor = migrationCommandExecutor;
     _connection              = connection;
     _sqlGenerationHelper     = sqlGenerationHelper;
     _currentContext          = currentContext;
     _modelRuntimeInitializer = modelRuntimeInitializer;
     _logger         = logger;
     _commandLogger  = commandLogger;
     _activeProvider = databaseProvider.Name;
 }
Пример #11
0
        public Migrator(
            [NotNull] IMigrationsAssembly migrationsAssembly,
            [NotNull] IHistoryRepository historyRepository,
            [NotNull] IDatabaseCreator databaseCreator,
            [NotNull] IMigrationsSqlGenerator migrationsSqlGenerator,
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
            [NotNull] IRelationalConnection connection,
            [NotNull] ISqlGenerationHelper sqlGenerationHelper,
            [NotNull] ILogger <Migrator> logger,
            [NotNull] IDatabaseProviderServices providerServices)
        {
            Check.NotNull(migrationsAssembly, nameof(migrationsAssembly));
            Check.NotNull(historyRepository, nameof(historyRepository));
            Check.NotNull(databaseCreator, nameof(databaseCreator));
            Check.NotNull(migrationsSqlGenerator, nameof(migrationsSqlGenerator));
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));
            Check.NotNull(connection, nameof(connection));
            Check.NotNull(sqlGenerationHelper, nameof(sqlGenerationHelper));
            Check.NotNull(logger, nameof(logger));
            Check.NotNull(providerServices, nameof(providerServices));

            _migrationsAssembly     = migrationsAssembly;
            _historyRepository      = historyRepository;
            _databaseCreator        = (IRelationalDatabaseCreator)databaseCreator;
            _migrationsSqlGenerator = migrationsSqlGenerator;
            _rawSqlCommandBuilder   = rawSqlCommandBuilder;
            _connection             = connection;
            _sqlGenerationHelper    = sqlGenerationHelper;
            _logger         = logger;
            _activeProvider = providerServices.InvariantName;
        }
Пример #12
0
 public TestDatabaseCreator(
     RelationalDatabaseCreatorDependencies dependencies,
     INpgsqlRelationalConnection connection,
     IRawSqlCommandBuilder rawSqlCommandBuilder)
     : base(dependencies, connection, rawSqlCommandBuilder)
 {
 }
Пример #13
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 SqliteRelationalConnection(
            [NotNull] RelationalConnectionDependencies dependencies,
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
            [NotNull] IDiagnosticsLogger <DbLoggerCategory.Infrastructure> logger)
            : base(dependencies)
        {
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));

            _rawSqlCommandBuilder = rawSqlCommandBuilder;
            _logger = logger;

            var optionsExtension = dependencies.ContextOptions.Extensions.OfType <SqliteOptionsExtension>().FirstOrDefault();

            if (optionsExtension != null)
            {
                _loadSpatialite = optionsExtension.LoadSpatialite;

                var relationalOptions = RelationalOptionsExtension.Extract(dependencies.ContextOptions);
                _commandTimeout = relationalOptions.CommandTimeout;

                if (relationalOptions.Connection != null)
                {
                    InitializeDbConnection(relationalOptions.Connection);
                }
            }
        }
        /// <summary>
        ///     <para>
        ///         Creates the service dependencies parameter object for a <see cref="HistoryRepository" />.
        ///     </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>
        ///     <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>
        /// </summary>
        /// <param name="databaseCreator"> The database creator. </param>
        /// <param name="rawSqlCommandBuilder"> A command builder for building raw SQL commands. </param>
        /// <param name="connection"> The connection to the database. </param>
        /// <param name="options"> Options for the current context instance. </param>
        /// <param name="modelDiffer"> The model differ. </param>
        /// <param name="migrationsSqlGenerator"> The SQL generator for Migrations operations. </param>
        /// <param name="sqlGenerationHelper"> Helpers for generating update SQL. </param>
        /// <param name="coreConventionSetBuilder"> The core convention set to use when creating the model. </param>
        /// <param name="conventionSetBuilders"> The convention sets to use when creating the model. </param>
        public HistoryRepositoryDependencies(
            [NotNull] IRelationalDatabaseCreator databaseCreator,
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
            [NotNull] IRelationalConnection connection,
            [NotNull] IDbContextOptions options,
            [NotNull] IMigrationsModelDiffer modelDiffer,
            [NotNull] IMigrationsSqlGenerator migrationsSqlGenerator,
            [NotNull] ISqlGenerationHelper sqlGenerationHelper,
            [NotNull] ICoreConventionSetBuilder coreConventionSetBuilder,
            [NotNull] IEnumerable <IConventionSetBuilder> conventionSetBuilders)
        {
            Check.NotNull(databaseCreator, nameof(databaseCreator));
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));
            Check.NotNull(connection, nameof(connection));
            Check.NotNull(options, nameof(options));
            Check.NotNull(modelDiffer, nameof(modelDiffer));
            Check.NotNull(migrationsSqlGenerator, nameof(migrationsSqlGenerator));
            Check.NotNull(sqlGenerationHelper, nameof(sqlGenerationHelper));
            Check.NotNull(coreConventionSetBuilder, nameof(coreConventionSetBuilder));
            Check.NotNull(conventionSetBuilders, nameof(conventionSetBuilders));

            DatabaseCreator      = databaseCreator;
            RawSqlCommandBuilder = rawSqlCommandBuilder;
            Connection           = connection;
            Options                  = options;
            ModelDiffer              = modelDiffer;
            MigrationsSqlGenerator   = migrationsSqlGenerator;
            SqlGenerationHelper      = sqlGenerationHelper;
            CoreConventionSetBuilder = coreConventionSetBuilder;
            ConventionSetBuilder     = new CompositeConventionSetBuilder((IReadOnlyList <IConventionSetBuilder>)conventionSetBuilders);
        }
Пример #15
0
        /// <summary>
        ///     <para>
        ///         Creates the service dependencies parameter object for a <see cref="HistoryRepository" />.
        ///     </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>
        ///     <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>
        /// </summary>
        /// <param name="databaseCreator"> The database creator. </param>
        /// <param name="rawSqlCommandBuilder"> A command builder for building raw SQL commands. </param>
        /// <param name="connection"> The connection to the database. </param>
        /// <param name="options"> Options for the current context instance. </param>
        /// <param name="modelDiffer"> The model differ. </param>
        /// <param name="migrationsSqlGenerator"> The SQL generator for Migrations operations. </param>
        /// <param name="sqlGenerationHelper"> Helpers for generating update SQL. </param>
        public HistoryRepositoryDependencies(
            [NotNull] IRelationalDatabaseCreator databaseCreator,
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
            [NotNull] IRelationalConnection connection,
            [NotNull] IDbContextOptions options,
            [NotNull] IMigrationsModelDiffer modelDiffer,
            [NotNull] IMigrationsSqlGenerator migrationsSqlGenerator,
            [NotNull] ISqlGenerationHelper sqlGenerationHelper)
        {
            Check.NotNull(databaseCreator, nameof(databaseCreator));
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));
            Check.NotNull(connection, nameof(connection));
            Check.NotNull(options, nameof(options));
            Check.NotNull(modelDiffer, nameof(modelDiffer));
            Check.NotNull(migrationsSqlGenerator, nameof(migrationsSqlGenerator));
            Check.NotNull(sqlGenerationHelper, nameof(sqlGenerationHelper));

            DatabaseCreator      = databaseCreator;
            RawSqlCommandBuilder = rawSqlCommandBuilder;
            Connection           = connection;
            Options                = options;
            ModelDiffer            = modelDiffer;
            MigrationsSqlGenerator = migrationsSqlGenerator;
            SqlGenerationHelper    = sqlGenerationHelper;
        }
Пример #16
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 Migrator(
            [NotNull] IMigrationsAssembly migrationsAssembly,
            [NotNull] IHistoryRepository historyRepository,
            [NotNull] IDatabaseCreator databaseCreator,
            [NotNull] IMigrationsSqlGenerator migrationsSqlGenerator,
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
            [NotNull] IMigrationCommandExecutor migrationCommandExecutor,
            [NotNull] IRelationalConnection connection,
            [NotNull] ISqlGenerationHelper sqlGenerationHelper,
            [NotNull] ILogger<Migrator> logger,
            [NotNull] IDatabaseProviderServices providerServices)
        {
            Check.NotNull(migrationsAssembly, nameof(migrationsAssembly));
            Check.NotNull(historyRepository, nameof(historyRepository));
            Check.NotNull(databaseCreator, nameof(databaseCreator));
            Check.NotNull(migrationsSqlGenerator, nameof(migrationsSqlGenerator));
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));
            Check.NotNull(migrationCommandExecutor, nameof(migrationCommandExecutor));
            Check.NotNull(connection, nameof(connection));
            Check.NotNull(sqlGenerationHelper, nameof(sqlGenerationHelper));
            Check.NotNull(logger, nameof(logger));
            Check.NotNull(providerServices, nameof(providerServices));

            _migrationsAssembly = migrationsAssembly;
            _historyRepository = historyRepository;
            _databaseCreator = (IRelationalDatabaseCreator)databaseCreator;
            _migrationsSqlGenerator = migrationsSqlGenerator;
            _rawSqlCommandBuilder = rawSqlCommandBuilder;
            _migrationCommandExecutor = migrationCommandExecutor;
            _connection = connection;
            _sqlGenerationHelper = sqlGenerationHelper;
            _logger = logger;
            _activeProvider = providerServices.InvariantName;
        }
Пример #17
0
 public ClickHouseDatabaseCreator(
     RelationalDatabaseCreatorDependencies dependencies,
     IClickHouseRelationalConnection connection,
     IRawSqlCommandBuilder rawSqlCommandBuilder) : base(dependencies)
 {
     _connection           = connection;
     _rawSqlCommandBuilder = rawSqlCommandBuilder;
 }
Пример #18
0
 public AS400SequenceValueGeneratorFactory(
     [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
     [NotNull] IAS400UpdateSqlGenerator sqlGenerator)
 {
     Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));
     Check.NotNull(sqlGenerator, nameof(sqlGenerator));
     _rawSqlCommandBuilder = rawSqlCommandBuilder;
     _sqlGenerator         = sqlGenerator;
 }
Пример #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 FbDatabaseCreator(
     [NotNull] RelationalDatabaseCreatorDependencies dependencies,
     [NotNull] IFirebirdRelationalConnection connection,
     [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder)
     : base(dependencies)
 {
     _connection           = connection;
     _rawSqlCommandBuilder = rawSqlCommandBuilder;
 }
 public TestDatabaseCreator(
     ISqlServerConnection connection,
     IMigrationsModelDiffer modelDiffer,
     IMigrationsSqlGenerator sqlGenerator,
     IModel model,
     IRawSqlCommandBuilder rawSqlCommandBuilder)
     : base(connection, modelDiffer, sqlGenerator, model, rawSqlCommandBuilder)
 {
 }
Пример #21
0
 /// <summary>
 ///     Clones this dependency parameter object with one service replaced.
 /// </summary>
 /// <param name="rawSqlCommandBuilder"> A replacement for the current dependency of this type. </param>
 /// <returns> A new parameter object with the given service replaced. </returns>
 public HistoryRepositoryDependencies With([NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder)
 => new HistoryRepositoryDependencies(
     DatabaseCreator,
     rawSqlCommandBuilder,
     Connection,
     Options,
     ModelDiffer,
     MigrationsSqlGenerator,
     SqlGenerationHelper);
 /// <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 MySqlDatabaseCreator(
     [NotNull] RelationalDatabaseCreatorDependencies dependencies,
     [NotNull] IMySqlRelationalConnection relationalConnection,
     [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder)
     : base(dependencies)
 {
     _relationalConnection = relationalConnection;
     _rawSqlCommandBuilder = rawSqlCommandBuilder;
 }
    /// <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 virtual ValueGenerator Create(
        IProperty property,
        NpgsqlSequenceValueGeneratorState generatorState,
        INpgsqlRelationalConnection connection,
        IRawSqlCommandBuilder rawSqlCommandBuilder,
        IRelationalCommandDiagnosticsLogger commandLogger)
    {
        var type = property.ClrType.UnwrapNullableType().UnwrapEnumType();

        if (type == typeof(long))
        {
            return(new NpgsqlSequenceHiLoValueGenerator <long>(rawSqlCommandBuilder, _sqlGenerator, generatorState, connection, commandLogger));
        }

        if (type == typeof(int))
        {
            return(new NpgsqlSequenceHiLoValueGenerator <int>(rawSqlCommandBuilder, _sqlGenerator, generatorState, connection, commandLogger));
        }

        if (type == typeof(short))
        {
            return(new NpgsqlSequenceHiLoValueGenerator <short>(rawSqlCommandBuilder, _sqlGenerator, generatorState, connection, commandLogger));
        }

        if (type == typeof(byte))
        {
            return(new NpgsqlSequenceHiLoValueGenerator <byte>(rawSqlCommandBuilder, _sqlGenerator, generatorState, connection, commandLogger));
        }

        if (type == typeof(char))
        {
            return(new NpgsqlSequenceHiLoValueGenerator <char>(rawSqlCommandBuilder, _sqlGenerator, generatorState, connection, commandLogger));
        }

        if (type == typeof(ulong))
        {
            return(new NpgsqlSequenceHiLoValueGenerator <ulong>(rawSqlCommandBuilder, _sqlGenerator, generatorState, connection, commandLogger));
        }

        if (type == typeof(uint))
        {
            return(new NpgsqlSequenceHiLoValueGenerator <uint>(rawSqlCommandBuilder, _sqlGenerator, generatorState, connection, commandLogger));
        }

        if (type == typeof(ushort))
        {
            return(new NpgsqlSequenceHiLoValueGenerator <ushort>(rawSqlCommandBuilder, _sqlGenerator, generatorState, connection, commandLogger));
        }

        if (type == typeof(sbyte))
        {
            return(new NpgsqlSequenceHiLoValueGenerator <sbyte>(rawSqlCommandBuilder, _sqlGenerator, generatorState, connection, commandLogger));
        }

        throw new ArgumentException(CoreStrings.InvalidValueGeneratorFactoryProperty(
                                        nameof(NpgsqlSequenceValueGeneratorFactory), property.Name, property.DeclaringEntityType.DisplayName()));
    }
Пример #24
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 SqlServerDatabaseCreator(
     RelationalDatabaseCreatorDependencies dependencies,
     ISqlServerConnection connection,
     IRawSqlCommandBuilder rawSqlCommandBuilder)
     : base(dependencies)
 {
     _connection           = connection;
     _rawSqlCommandBuilder = rawSqlCommandBuilder;
 }
 public MySQLDatabaseCreator(
     [NotNull] RelationalDatabaseCreatorDependencies dependencies,
     [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder)
     : base(dependencies)
 {
     _connection               = (MySQLServerConnection)dependencies.Connection;
     _sqlGenerator             = dependencies.MigrationsSqlGenerator;
     _rawSqlCommandBuilder     = rawSqlCommandBuilder;
     _migrationCommandExecutor = dependencies.MigrationCommandExecutor;
 }
        /// <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 SqlServerSequenceValueGeneratorFactory(
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
            [NotNull] ISqlServerUpdateSqlGenerator sqlGenerator)
        {
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));
            Check.NotNull(sqlGenerator, nameof(sqlGenerator));

            _rawSqlCommandBuilder = rawSqlCommandBuilder;
            _sqlGenerator = sqlGenerator;
        }
 public TestDatabaseCreator(
     NpgsqlRelationalConnection connection,
     IMigrationsModelDiffer modelDiffer,
     IMigrationsSqlGenerator sqlGenerator,
     IMigrationCommandExecutor migrationCommandExecutor,
     IModel model,
     IRawSqlCommandBuilder rawSqlCommandBuilder,
     IExecutionStrategyFactory executionStrategyFactory)
     : base(connection, modelDiffer, sqlGenerator, migrationCommandExecutor, model, rawSqlCommandBuilder, executionStrategyFactory)
 {
 }
Пример #28
0
 public IgnoreForeignKeyMySqlMigrator(IMigrationsAssembly migrationsAssembly,
                                      IHistoryRepository historyRepository,
                                      IDatabaseCreator databaseCreator, IMigrationsSqlGenerator migrationsSqlGenerator,
                                      IRawSqlCommandBuilder rawSqlCommandBuilder, IMigrationCommandExecutor migrationCommandExecutor,
                                      IRelationalConnection connection, ISqlGenerationHelper sqlGenerationHelper,
                                      ICurrentDbContext currentContext, IDiagnosticsLogger <DbLoggerCategory.Migrations> logger,
                                      IDiagnosticsLogger <DbLoggerCategory.Database.Command> commandLogger, IDatabaseProvider databaseProvider) :
     base(migrationsAssembly, historyRepository, databaseCreator, migrationsSqlGenerator, rawSqlCommandBuilder,
          migrationCommandExecutor, connection, sqlGenerationHelper, currentContext, logger, commandLogger,
          databaseProvider)
 {
 }
Пример #29
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 AseValueGeneratorSelector(
     ValueGeneratorSelectorDependencies dependencies,
     IAseSequenceValueGeneratorFactory sequenceFactory,
     IAseConnection connection,
     IRawSqlCommandBuilder rawSqlCommandBuilder,
     IDiagnosticsLogger <DbLoggerCategory.Database.Command> commandLogger)
     : base(dependencies)
 {
     _sequenceFactory      = sequenceFactory;
     _connection           = connection;
     _rawSqlCommandBuilder = rawSqlCommandBuilder;
     _commandLogger        = commandLogger;
 }
Пример #30
0
 public SqlServerValueGeneratorSelector(
     [NotNull] ValueGeneratorSelectorDependencies dependencies,
     [NotNull] ISqlServerSequenceValueGeneratorFactory sequenceFactory,
     [NotNull] ISqlServerConnection connection,
     [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
     [NotNull] IDiagnosticsLogger <DbLoggerCategory.Database.Command> commandLogger)
     : base(dependencies)
 {
     _sequenceFactory      = sequenceFactory;
     _connection           = connection;
     _rawSqlCommandBuilder = rawSqlCommandBuilder;
     _commandLogger        = commandLogger;
 }
        public SqliteDatabaseCreator(
            [NotNull] SqliteRelationalConnection connection,
            [NotNull] IMigrationsModelDiffer modelDiffer,
            [NotNull] IMigrationsSqlGenerator migrationsSqlGenerator,
            [NotNull] IModel model,
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder)
            : base(model, connection, modelDiffer, migrationsSqlGenerator)
        {
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));

            _connection = connection;
            _rawSqlCommandBuilder = rawSqlCommandBuilder;
        }
Пример #32
0
        public SqliteDatabaseCreator(
            [NotNull] SqliteRelationalConnection connection,
            [NotNull] IMigrationsModelDiffer modelDiffer,
            [NotNull] IMigrationsSqlGenerator migrationsSqlGenerator,
            [NotNull] IModel model,
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder)
            : base(model, connection, modelDiffer, migrationsSqlGenerator)
        {
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));

            _connection           = connection;
            _rawSqlCommandBuilder = rawSqlCommandBuilder;
        }
 /// <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 SqlServerValueGeneratorSelector(
     ValueGeneratorSelectorDependencies dependencies,
     ISqlServerSequenceValueGeneratorFactory sequenceFactory,
     ISqlServerConnection connection,
     IRawSqlCommandBuilder rawSqlCommandBuilder,
     IRelationalCommandDiagnosticsLogger commandLogger)
     : base(dependencies)
 {
     _sequenceFactory      = sequenceFactory;
     _connection           = connection;
     _rawSqlCommandBuilder = rawSqlCommandBuilder;
     _commandLogger        = commandLogger;
 }
        /// <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 SqlServerDatabaseCreator(
            [NotNull] ISqlServerConnection connection,
            [NotNull] IMigrationsModelDiffer modelDiffer,
            [NotNull] IMigrationsSqlGenerator migrationsSqlGenerator,
            [NotNull] IMigrationCommandExecutor migrationCommandExecutor,
            [NotNull] IModel model,
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder)
            : base(model, connection, modelDiffer, migrationsSqlGenerator, migrationCommandExecutor)
        {
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));

            _connection = connection;
            _migrationsSqlGenerator = migrationsSqlGenerator;
            _rawSqlCommandBuilder = rawSqlCommandBuilder;
        }
Пример #35
0
        protected HistoryRepository(
            [NotNull] IDatabaseCreator databaseCreator,
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
            [NotNull] IRelationalConnection connection,
            [NotNull] IDbContextOptions options,
            [NotNull] IMigrationsModelDiffer modelDiffer,
            [NotNull] IMigrationsSqlGenerator migrationsSqlGenerator,
            [NotNull] IRelationalAnnotationProvider annotations,
            [NotNull] ISqlGenerationHelper sqlGenerationHelper)
        {
            Check.NotNull(databaseCreator, nameof(databaseCreator));
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));
            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(sqlGenerationHelper, nameof(sqlGenerationHelper));

            _databaseCreator = (IRelationalDatabaseCreator)databaseCreator;
            _rawSqlCommandBuilder = rawSqlCommandBuilder;
            _connection = connection;
            _modelDiffer = modelDiffer;
            _migrationsSqlGenerator = migrationsSqlGenerator;
            SqlGenerationHelper = sqlGenerationHelper;

            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.FindEntityType(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);
        }
Пример #36
0
 /// <summary>
 /// Creates a new instance of <see cref="DataMigrator"/>.
 /// </summary>
 public DataMigrator(
     IHistoryRepository historyRepository,
     IDatabaseCreator databaseCreator,
     IMigrationsSqlGenerator migrationsSqlGenerator,
     IRawSqlCommandBuilder rawSqlCommandBuilder,
     IRelationalConnection connection,
     ILoggerFactory loggerFactory,
     IServiceProvider serviceProvider)
 {
     _historyRepository = historyRepository;
     _databaseCreator = (IRelationalDatabaseCreator)databaseCreator;
     _migrationsSqlGenerator = migrationsSqlGenerator;
     _rawSqlCommandBuilder = rawSqlCommandBuilder;
     _connection = connection;
     _serviceProvider = serviceProvider;
     _logger = loggerFactory.CreateLogger<DataMigrator>();
 }
        public SqliteRelationalConnection(
            [NotNull] IRawSqlCommandBuilder rawSqlCommandBuilder,
            [NotNull] IDbContextOptions options,
            // ReSharper disable once SuggestBaseTypeForParameter
            [NotNull] ILogger<SqliteRelationalConnection> logger)
            : base(options, logger)
        {
            Check.NotNull(rawSqlCommandBuilder, nameof(rawSqlCommandBuilder));

            _rawSqlCommandBuilder = rawSqlCommandBuilder;

            var optionsExtension = options.Extensions.OfType<SqliteOptionsExtension>().FirstOrDefault();
            if (optionsExtension != null)
            {
                _enforceForeignKeys = optionsExtension.EnforceForeignKeys;
            }
        }
 public MyHistoryRepository(
     IDatabaseCreator databaseCreator,
     IRawSqlCommandBuilder rawSqlCommandBuilder,
     IRelationalConnection connection,
     IDbContextOptions options,
     IMigrationsModelDiffer modelDiffer,
     IMigrationsSqlGenerator migrationsSqlGenerator,
     IRelationalAnnotationProvider annotations,
     ISqlGenerationHelper sqlGenerationHelper)
     : base(databaseCreator,
         rawSqlCommandBuilder,
         connection,
         options,
         modelDiffer,
         migrationsSqlGenerator,
         annotations,
         sqlGenerationHelper
         )
 {
 }
 public TestDatabaseCreator(
     ISqlServerConnection connection,
     IMigrationsModelDiffer modelDiffer,
     IMigrationsSqlGenerator sqlGenerator,
     IModel model,
     IRawSqlCommandBuilder rawSqlCommandBuilder)
     : base(connection, modelDiffer, sqlGenerator, model, rawSqlCommandBuilder)
 {
 }