Update MySqlConnector

This commit is contained in:
sunkaixuan 2022-11-04 01:10:52 +08:00
parent 6852578e73
commit 892bf61c9b
7 changed files with 106 additions and 7 deletions

View File

@ -81,5 +81,33 @@ namespace SqlSugar.MySqlConnector
{ {
return EntityColumnToDbColumn(entity,dbTableName,item); 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);
}
}
}
} }
} }

View File

@ -275,6 +275,25 @@ namespace SqlSugar.MySqlConnector
#endregion #endregion
#region Methods #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) public override bool IsAnyColumnRemark(string columnName, string tableName)
{ {
var isAny=this.Context.DbMaintenance.GetColumnInfosByTableName(tableName, false) var isAny=this.Context.DbMaintenance.GetColumnInfosByTableName(tableName, false)
@ -299,6 +318,12 @@ namespace SqlSugar.MySqlConnector
/// <returns></returns> /// <returns></returns>
public override bool CreateDatabase(string databaseName, string databaseDirectory = null) public override bool CreateDatabase(string databaseName, string databaseDirectory = null)
{ {
if (this.Context.Ado.IsValidConnection())
{
return true;
}
if (databaseDirectory != null) if (databaseDirectory != null)
{ {
if (!FileHelper.IsExistDirectory(databaseDirectory)) if (!FileHelper.IsExistDirectory(databaseDirectory))
@ -386,6 +411,10 @@ namespace SqlSugar.MySqlConnector
string primaryKey = null; string primaryKey = null;
string identity = item.IsIdentity ? this.CreateTableIdentity : null; string identity = item.IsIdentity ? this.CreateTableIdentity : null;
string addItem = string.Format(this.CreateTableColumn, this.SqlBuilder.GetTranslationColumnName(columnName), dataType, dataSize, nullType, primaryKey, identity); 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); columnArray.Add(addItem);
} }
string tableString = string.Format(this.CreateTableSql, this.SqlBuilder.GetTranslationTableName(tableName), string.Join(",\r\n", columnArray)); string tableString = string.Format(this.CreateTableSql, this.SqlBuilder.GetTranslationTableName(tableName), string.Join(",\r\n", columnArray));

View File

@ -1,4 +1,4 @@
using MySqlConnector; using MySql.Data.MySqlClient;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
@ -131,7 +131,7 @@ namespace SqlSugar.MySqlConnector
{ {
if (this.Chara == null) if (this.Chara == null)
{ {
return "UTF8"; return "utf8mb4";
} }
else else
{ {
@ -170,7 +170,14 @@ namespace SqlSugar.MySqlConnector
} }
else if (colum.DataType == typeof(bool)) 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) else if (colum.DataType == UtilConstants.DateType&& row[colum] != null && row[colum] != DBNull.Value)
{ {

View File

@ -72,6 +72,10 @@ namespace SqlSugar.MySqlConnector
var parameter = model.Args[0]; var parameter = model.Args[0];
var parameter2 = model.Args[1]; var parameter2 = model.Args[1];
var parameter3 = model.Args[2]; 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); 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); 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}\"";
}
} }
} }

View File

@ -17,7 +17,7 @@ namespace SqlSugar.MySqlConnector
public async Task<int> ExecuteBulkCopyAsync(DataTable dt) public async Task<int> ExecuteBulkCopyAsync(DataTable dt)
{ {
var dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "failFiles"); var dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bulkcopyfiles");
DirectoryInfo dir = new DirectoryInfo(dllPath); DirectoryInfo dir = new DirectoryInfo(dllPath);
if (!dir.Exists) if (!dir.Exists)
{ {
@ -34,7 +34,7 @@ namespace SqlSugar.MySqlConnector
// IsolationLevel.Parse // IsolationLevel.Parse
MySqlBulkLoader bulk = new MySqlBulkLoader(conn) MySqlBulkLoader bulk = new MySqlBulkLoader(conn)
{ {
CharacterSet = "UTF8", CharacterSet = "utf8mb4",
FieldTerminator = ",", FieldTerminator = ",",
FieldQuotationCharacter = '"', FieldQuotationCharacter = '"',
EscapeCharacter = '"', EscapeCharacter = '"',

View File

@ -73,7 +73,7 @@ namespace SqlSugar.MySqlConnector
else if (type == UtilConstants.StringType || type == UtilConstants.ObjType) else if (type == UtilConstants.StringType || type == UtilConstants.ObjType)
{ {
++i; ++i;
var parameterName = this.Builder.SqlParameterKeyWord + name + i; var parameterName = this.Builder.SqlParameterKeyWord + name +"_"+ i;
this.Parameters.Add(new SugarParameter(parameterName, value)); this.Parameters.Add(new SugarParameter(parameterName, value));
return parameterName; return parameterName;
} }

View File

@ -143,7 +143,7 @@ namespace SqlSugar.MySqlConnector
else if (type == UtilConstants.StringType || type == UtilConstants.ObjType) else if (type == UtilConstants.StringType || type == UtilConstants.ObjType)
{ {
++i; ++i;
var parameterName = this.Builder.SqlParameterKeyWord + name + i; var parameterName = this.Builder.SqlParameterKeyWord + name +"_"+ i;
this.Parameters.Add(new SugarParameter(parameterName, value)); this.Parameters.Add(new SugarParameter(parameterName, value));
return parameterName; return parameterName;
} }