From 0228bdaf4a2401ad1e46929e0efc91b246ec0ade Mon Sep 17 00:00:00 2001 From: Oliver Cooper Date: Mon, 17 Aug 2020 21:55:00 +0100 Subject: [PATCH] Fixed MySqlConnector compatibility issues between ABP and Quartz when using MySql --- .../Volo/Abp/Quartz/AbpQuartzModule.cs | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/framework/src/Volo.Abp.Quartz/Volo/Abp/Quartz/AbpQuartzModule.cs b/framework/src/Volo.Abp.Quartz/Volo/Abp/Quartz/AbpQuartzModule.cs index ec1d8a9a32..daf252bc8f 100644 --- a/framework/src/Volo.Abp.Quartz/Volo/Abp/Quartz/AbpQuartzModule.cs +++ b/framework/src/Volo.Abp.Quartz/Volo/Abp/Quartz/AbpQuartzModule.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Quartz; +using Quartz.Impl.AdoJobStore.Common; using Volo.Abp.Modularity; using Volo.Abp.Threading; @@ -14,6 +15,27 @@ namespace Volo.Abp.Quartz { var options = context.Services.ExecutePreConfiguredActions(); + // todo: Remove this once Pomelo update MySqlConnector to >= 1.0.0 : https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/pull/1103 + var mySqlAvailable = System.Type.GetType("MySql.Data.MySqlClient.MySqlConnection, MySqlConnector") != null; + if (mySqlAvailable) + { + // Overriding the default 'MySqlConnector' provider to use the old 'MySql.Data' namespace found in MySqlConnector < 1.0.0 + DbProvider.RegisterDbMetadata("MySqlConnector", new DbMetadata() + { + ProductName = "MySQL, MySqlConnector provider", + AssemblyName = "MySqlConnector", + ConnectionType = System.Type.GetType("MySql.Data.MySqlClient.MySqlConnection, MySqlConnector"), + CommandType = System.Type.GetType("MySql.Data.MySqlClient.MySqlCommand, MySqlConnector"), + ParameterType = System.Type.GetType("MySql.Data.MySqlClient.MySqlParameter, MySqlConnector"), + ParameterDbType = System.Type.GetType("MySql.Data.MySqlClient.MySqlDbType, MySqlConnector"), + ParameterDbTypePropertyName = "MySqlDbType", + ParameterNamePrefix = "?", + ExceptionType = System.Type.GetType("MySql.Data.MySqlClient.MySqlException, MySqlConnector"), + BindByName = true, + DbBinaryTypeName = "Blob" + }); + } + context.Services.AddQuartz(options.Properties, build => { build.UseMicrosoftDependencyInjectionScopedJobFactory();