public virtual IEnumerable <ModificationCommand> GenerateModificationCommands([CanBeNull] IModel model)
        {
            Check.DebugAssert(
                Columns.Length == Values.GetLength(1),
                $"The number of values doesn't match the number of keys (${Columns.Length})");

            var table      = model?.GetRelationalModel().FindTable(Table, Schema);
            var properties = table != null
                ? MigrationsModelDiffer.GetMappedProperties(table, Columns)
                : null;

            for (var i = 0; i < Values.GetLength(0); i++)
            {
                var modifications = new ColumnModification[Columns.Length];
                for (var j = 0; j < Columns.Length; j++)
                {
                    modifications[j] = new ColumnModification(
                        Columns[j], originalValue: null, value: Values[i, j], property: properties?[j],
                        columnType: ColumnTypes?[j], isRead: false, isWrite: true, isKey: true, isCondition: false,
                        sensitiveLoggingEnabled: false);
                }

                yield return(new ModificationCommand(Table, Schema, modifications, sensitiveLoggingEnabled: false));
            }
        }
Ejemplo n.º 2
0
        public virtual IEnumerable <ModificationCommand> GenerateModificationCommands(IModel?model)
        {
            Check.DebugAssert(
                KeyColumns.Length == KeyValues.GetLength(1),
                $"The number of key values doesn't match the number of keys (${KeyColumns.Length})");

            var table      = model?.GetRelationalModel().FindTable(Table, Schema);
            var properties = table != null
                ? MigrationsModelDiffer.GetMappedProperties(table, KeyColumns)
                : null;

            var modificationCommandFactory = new ModificationCommandFactory();

            for (var i = 0; i < KeyValues.GetLength(0); i++)
            {
                var modificationCommand = modificationCommandFactory.CreateModificationCommand(
                    new ModificationCommandParameters(
                        Table, Schema, sensitiveLoggingEnabled: false));
                for (var j = 0; j < KeyColumns.Length; j++)
                {
                    var columnModificationParameters = new ColumnModificationParameters(
                        KeyColumns[j], originalValue: null, value: KeyValues[i, j], property: properties?[j],
                        columnType: KeyColumnTypes?[j], typeMapping: null, read: false, write: true, key: true, condition: true,
                        sensitiveLoggingEnabled: false);

                    modificationCommand.AddColumnModification(columnModificationParameters);
                }

                yield return((ModificationCommand)modificationCommand);
            }
        }
Ejemplo n.º 3
0
 //TODO: Testear que se resuelva el IServiceProvider
 public ComponentStateManager(
     IServiceProvider serviceProvider,
     IComponentStore componentStore,
     IComponentsAssembliesProvider componentsAssembliesProvider,
     MigrationsModelDiffer modelDiffer,
     MigrationsSqlGenerator sqlGenerator,
     IEntityFrameworkDataProvider dataProvider)
 {
     _serviceProvider = serviceProvider;
     _componentStore  = componentStore;
     _componentsAssembliesProvider = componentsAssembliesProvider;
     _modelDiffer  = modelDiffer;
     _sqlGenerator = sqlGenerator;
     _dataProvider = dataProvider;
 }
Ejemplo n.º 4
0
 public GoofyComponentsPopulate(
     IServiceCollection services,
     IComponentStateManager componentStateManager,
     IComponentStore componentStore,
     IComponentsInfoProvider componentsInfoProvider,
     IComponentsAssembliesProvider componentsAssembliesProvider,
     MigrationsModelDiffer modelDiffer,
     MigrationsSqlGenerator sqlGenerator,
     IEntityFrameworkDataProvider dataProvider
     )
 {
     _services = services;
     _componentStateManager       = componentStateManager;
     _componentStore              = componentStore;
     _componentsInfoProvider      = componentsInfoProvider;
     _componentAssembliesProvider = componentsAssembliesProvider;
     _modelDiffer  = modelDiffer;
     _sqlGenerator = sqlGenerator;
     _dataProvider = dataProvider;
 }
        private static IHistoryRepository CreateHistoryRepository()
        {
            var optionsBuilder = new DbContextOptionsBuilder();

            optionsBuilder.UseMySQL(MySQLTestStore.rootConnectionString + "database=test;");
            var connection = new MySQLServerConnection(optionsBuilder.Options, new Logger <MySQLServerConnection>(new LoggerFactory()));

            var typeMapper = new MySQLTypeMapper();

            var serviceCollection = new ServiceCollection();

            serviceCollection.AddEntityFrameworkMySQL()
            .AddDbContext <MyTestContext>();

            var serviceProvider = serviceCollection.BuildServiceProvider();

            var context = serviceProvider.GetRequiredService <MyTestContext>();

            var creator    = context.GetService <IRelationalDatabaseCreator>();
            var cmdBuilder = context.GetService <IRawSqlCommandBuilder>();

            var options = new DbContextOptions <DbContext>(
                new Dictionary <Type, IDbContextOptionsExtension>
            {
                {
                    typeof(MySQLOptionsExtension),
                    new MySQLOptionsExtension()
                }
            });

            var modelDiffer = new MigrationsModelDiffer(
                new MySQLTypeMapper(),
                new MySQLMigrationsAnnotationProvider(
                    new MigrationsAnnotationProviderDependencies()));

            var logger = new DiagnosticsLogger <DbLoggerCategory.Database.Command>(
                new LoggerFactory(),
                new LoggingOptions(),
                new DiagnosticListener("Fake"));

            var commandBuilderFactory = new RelationalCommandBuilderFactory(
                logger,
                typeMapper);

            var sqlGeneratorHelper = new MySQLSqlGenerationHelper(new RelationalSqlGenerationHelperDependencies());

            var migrationsSqlGeneratorDependencies = new MigrationsSqlGeneratorDependencies(
                commandBuilderFactory,
                sqlGeneratorHelper,
                typeMapper);

            var migrationsSqlGeneratior = new MySQLMigrationsSqlGenerator(migrationsSqlGeneratorDependencies);

            HistoryRepositoryDependencies dependencies = new HistoryRepositoryDependencies(
                creator,
                cmdBuilder,
                connection,
                options,
                modelDiffer,
                migrationsSqlGeneratior,
                sqlGeneratorHelper);

            return(new MySQLHistoryRepository(dependencies));
        }