diff --git a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/CodeFirst/MySqlCodeFirst.cs b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/CodeFirst/MySqlCodeFirst.cs
index 32fa5fefa..74d702195 100644
--- a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/CodeFirst/MySqlCodeFirst.cs
+++ b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/CodeFirst/MySqlCodeFirst.cs
@@ -81,5 +81,33 @@ namespace SqlSugar.MySqlConnector
{
return EntityColumnToDbColumn(entity,dbTableName,item);
}
+
+ protected override void GetDbType(EntityColumnInfo item, Type propertyType, DbColumnInfo result)
+ {
+ if (!string.IsNullOrEmpty(item.DataType))
+ {
+ result.DataType = item.DataType;
+ }
+ else if (propertyType.IsEnum())
+ {
+ result.DataType = this.Context.Ado.DbBind.GetDbTypeName(item.Length > 9 ? UtilConstants.LongType.Name : UtilConstants.IntType.Name);
+ }
+ else
+ {
+ var name = GetType(propertyType.Name);
+ if (name == "Boolean")
+ {
+ result.DataType = "tinyint";
+ result.Length = 1;
+ result.Scale = 0;
+ result.DecimalDigits = 0;
+ }
+ else
+ {
+ result.DataType = this.Context.Ado.DbBind.GetDbTypeName(name);
+ }
+ }
+ }
+
}
}
diff --git a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/DbMaintenance/MySqlDbMaintenance.cs b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/DbMaintenance/MySqlDbMaintenance.cs
index 2b5a0ec8d..10237f2a9 100644
--- a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/DbMaintenance/MySqlDbMaintenance.cs
+++ b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/DbMaintenance/MySqlDbMaintenance.cs
@@ -275,6 +275,25 @@ namespace SqlSugar.MySqlConnector
#endregion
#region Methods
+ public override bool IsAnyTable(string tableName, bool isCache = true)
+ {
+ try
+ {
+ return base.IsAnyTable(tableName, isCache);
+ }
+ catch (Exception ex)
+ {
+ if (SugarCompatible.IsFramework && ex.Message == "Invalid attempt to Read when reader is closed.")
+ {
+ Check.ExceptionEasy($"To upgrade the MySql.Data. Error:{ex.Message}", $" 请先升级MySql.Data 。 详细错误:{ex.Message}");
+ return true;
+ }
+ else
+ {
+ throw;
+ }
+ }
+ }
public override bool IsAnyColumnRemark(string columnName, string tableName)
{
var isAny=this.Context.DbMaintenance.GetColumnInfosByTableName(tableName, false)
@@ -299,6 +318,12 @@ namespace SqlSugar.MySqlConnector
///
public override bool CreateDatabase(string databaseName, string databaseDirectory = null)
{
+
+ if (this.Context.Ado.IsValidConnection())
+ {
+ return true;
+ }
+
if (databaseDirectory != null)
{
if (!FileHelper.IsExistDirectory(databaseDirectory))
@@ -386,6 +411,10 @@ namespace SqlSugar.MySqlConnector
string primaryKey = null;
string identity = item.IsIdentity ? this.CreateTableIdentity : null;
string addItem = string.Format(this.CreateTableColumn, this.SqlBuilder.GetTranslationColumnName(columnName), dataType, dataSize, nullType, primaryKey, identity);
+ if (!string.IsNullOrEmpty(item.ColumnDescription))
+ {
+ addItem += " COMMENT '"+item.ColumnDescription.ToSqlFilter()+"' ";
+ }
columnArray.Add(addItem);
}
string tableString = string.Format(this.CreateTableSql, this.SqlBuilder.GetTranslationTableName(tableName), string.Join(",\r\n", columnArray));
diff --git a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlBlukCopy.cs b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlBlukCopy.cs
index a72728b68..f89eca7c2 100644
--- a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlBlukCopy.cs
+++ b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlBlukCopy.cs
@@ -1,4 +1,4 @@
-using MySqlConnector;
+using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
@@ -131,7 +131,7 @@ namespace SqlSugar.MySqlConnector
{
if (this.Chara == null)
{
- return "UTF8";
+ return "utf8mb4";
}
else
{
@@ -170,7 +170,14 @@ namespace SqlSugar.MySqlConnector
}
else if (colum.DataType == typeof(bool))
{
- sb.Append(row[colum].ObjToBool() ? 1 : 0);
+ if (row[colum] == DBNull.Value)
+ {
+ sb.Append("NULL");
+ }
+ else
+ {
+ sb.Append(row[colum].ObjToBool() ? 1 : 0);
+ }
}
else if (colum.DataType == UtilConstants.DateType&& row[colum] != null && row[colum] != DBNull.Value)
{
diff --git a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlExpressionContext.cs b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlExpressionContext.cs
index 64c130407..f79fa01f5 100644
--- a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlExpressionContext.cs
+++ b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlExpressionContext.cs
@@ -72,6 +72,10 @@ namespace SqlSugar.MySqlConnector
var parameter = model.Args[0];
var parameter2 = model.Args[1];
var parameter3 = model.Args[2];
+ if (parameter3.MemberValue.ObjToString() == DateType.Weekday.ObjToString())
+ {
+ parameter3.MemberValue = "Week";
+ }
return string.Format(" (TIMESTAMPDIFF({2},{0},{1})=0) ", parameter.MemberName, parameter2.MemberName, parameter3.MemberValue);
}
@@ -173,5 +177,36 @@ namespace SqlSugar.MySqlConnector
{
return string.Format("instr ({0},{1})", model.Args[0].MemberName, model.Args[1].MemberName);
}
+
+ public override string JsonField(MethodCallExpressionModel model)
+ {
+ var parameter = model.Args[0];
+ var parameter1 = model.Args[1];
+ //var parameter2 = model.Args[2];
+ //var parameter3= model.Args[3];
+ var result = GetJson(parameter.MemberName, parameter1.MemberValue, model.Args.Count() == 2);
+ if (model.Args.Count > 2)
+ {
+ result = GetJson(result, model.Args[2].MemberValue, model.Args.Count() == 3);
+ }
+ if (model.Args.Count > 3)
+ {
+ result = GetJson(result, model.Args[3].MemberValue, model.Args.Count() == 4);
+ }
+ if (model.Args.Count > 4)
+ {
+ result = GetJson(result, model.Args[4].MemberValue, model.Args.Count() == 5);
+ }
+ if (model.Args.Count > 5)
+ {
+ result = GetJson(result, model.Args[5].MemberValue, model.Args.Count() == 6);
+ }
+ return result;
+ }
+
+ private string GetJson(object memberName1, object memberName2, bool isLast)
+ {
+ return $"{memberName1}->\"$.{memberName2}\"";
+ }
}
}
diff --git a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlFastBuilder.cs b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlFastBuilder.cs
index 5d652ec7b..ddd0aa9c1 100644
--- a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlFastBuilder.cs
+++ b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlFastBuilder.cs
@@ -17,7 +17,7 @@ namespace SqlSugar.MySqlConnector
public async Task ExecuteBulkCopyAsync(DataTable dt)
{
- var dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "failFiles");
+ var dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bulkcopyfiles");
DirectoryInfo dir = new DirectoryInfo(dllPath);
if (!dir.Exists)
{
@@ -34,7 +34,7 @@ namespace SqlSugar.MySqlConnector
// IsolationLevel.Parse
MySqlBulkLoader bulk = new MySqlBulkLoader(conn)
{
- CharacterSet = "UTF8",
+ CharacterSet = "utf8mb4",
FieldTerminator = ",",
FieldQuotationCharacter = '"',
EscapeCharacter = '"',
diff --git a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlInsertBuilder.cs b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlInsertBuilder.cs
index 5fe8d0b44..532f5e9e6 100644
--- a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlInsertBuilder.cs
+++ b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlInsertBuilder.cs
@@ -73,7 +73,7 @@ namespace SqlSugar.MySqlConnector
else if (type == UtilConstants.StringType || type == UtilConstants.ObjType)
{
++i;
- var parameterName = this.Builder.SqlParameterKeyWord + name + i;
+ var parameterName = this.Builder.SqlParameterKeyWord + name +"_"+ i;
this.Parameters.Add(new SugarParameter(parameterName, value));
return parameterName;
}
diff --git a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlUpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlUpdateBuilder.cs
index 5d95fe171..2f6968a2b 100644
--- a/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlUpdateBuilder.cs
+++ b/Src/Asp.NetCore2/SqlSugar.MySqlConnectorCore/MySql/SqlBuilder/MySqlUpdateBuilder.cs
@@ -143,7 +143,7 @@ namespace SqlSugar.MySqlConnector
else if (type == UtilConstants.StringType || type == UtilConstants.ObjType)
{
++i;
- var parameterName = this.Builder.SqlParameterKeyWord + name + i;
+ var parameterName = this.Builder.SqlParameterKeyWord + name +"_"+ i;
this.Parameters.Add(new SugarParameter(parameterName, value));
return parameterName;
}