public MySQLQuerySqlGenerator( IRelationalCommandBuilderFactory relationalCommandBuilderFactory, ISqlGenerationHelper sqlGenerator, IParameterNameGeneratorFactory parameterNameGeneratorFactory, IRelationalTypeMapper relationalTypeMapper, SelectExpression selectExpression) : base(relationalCommandBuilderFactory, sqlGenerator, parameterNameGeneratorFactory, relationalTypeMapper, selectExpression) { _typeMapper = relationalTypeMapper as MySQLTypeMapper; }
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)); }