Example #1
0
 public MySQLQuerySqlGenerator(
     IRelationalCommandBuilderFactory relationalCommandBuilderFactory,
     ISqlGenerationHelper sqlGenerator,
     IParameterNameGeneratorFactory parameterNameGeneratorFactory,
     IRelationalTypeMapper relationalTypeMapper,
     SelectExpression selectExpression)
     : base(relationalCommandBuilderFactory, sqlGenerator, parameterNameGeneratorFactory, relationalTypeMapper, selectExpression)
 {
     _typeMapper = relationalTypeMapper as MySQLTypeMapper;
 }
Example #2
0
        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 annotationsProvider = new MySQLAnnotationProvider();
            var sqlGenerator        = new MySQLSqlGenerationHelper();
            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 <IDatabaseCreator>();
            var cmdBuilder = context.GetService <IRawSqlCommandBuilder>();


            return(new MySQLHistoryRepository(
                       creator,
                       cmdBuilder,
                       connection,
                       new DbContextOptions <DbContext>(
                           new Dictionary <Type, IDbContextOptionsExtension>
            {
                { typeof(MySQLOptionsExtension), new MySQLOptionsExtension() }
            }),
                       new MigrationsModelDiffer(
                           new MySQLTypeMapper(),
                           annotationsProvider,
                           new MySQLMigrationsAnnotationProvider()),
                       new MySQLMigrationsSqlGenerator(
                           new RelationalCommandBuilderFactory(
                               new FakeSensitiveDataLogger <RelationalCommandBuilderFactory>(),
                               new DiagnosticListener("FakeListener"),
                               typeMapper),
                           new MySQLSqlGenerationHelper(),
                           typeMapper,
                           annotationsProvider),
                       annotationsProvider,
                       sqlGenerator));
        }
        public void GenerateFluentApiHasCharset(string mySQLAnnotation)
        {
            var typeMappingSource = new MySQLTypeMapper(
                TestServiceFactory.Instance.Create <TypeMappingSourceDependencies>(),
                TestServiceFactory.Instance.Create <RelationalTypeMappingSourceDependencies>(),
                TestServiceFactory.Instance.Create <MySQLOptions>());

            var generator    = new MySQLAnnotationCodeGenerator(new AnnotationCodeGeneratorDependencies(typeMappingSource));
            var modelBuilder = new ModelBuilder(MySQLConventionSetBuilder.Build());

            modelBuilder.Entity(
                "Post",
                x =>
            {
                x.Property <int>("Id").HasAnnotation(mySQLAnnotation, "utf8mb4");
            });

            var key        = modelBuilder.Model.FindEntityType("Post").GetProperties().Single();
            var annotation = key.FindAnnotation(mySQLAnnotation);
            var result     = generator.GenFluentApi(key, annotation);

            Assert.AreEqual(mySQLAnnotation == MySQLAnnotationNames.Charset ? "HasCharSet" : "HasCollation", result.Method);
            Assert.AreEqual(1, result.Arguments.Count);
        }
        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));
        }