From d5c976c6e789d87808ad61c9a2525cd2299cea4d Mon Sep 17 00:00:00 2001 From: skx <610262374@qq.com> Date: Sat, 16 Jan 2021 17:14:39 +0800 Subject: [PATCH] Support varchar --- .../Abstract/SugarProvider/SqlSugarAccessory.cs | 10 +++++++++- Src/Asp.Net/SqlSugar/Entities/ConnMoreSettings.cs | 11 ++--------- Src/Asp.Net/SqlSugar/Realization/Dm/DmProvider.cs | 5 +++++ .../SqlSugar/Realization/MySql/MySqlProvider.cs | 5 +++++ .../MySql/SqlBuilder/MySqlInsertBuilder.cs | 2 +- .../MySql/SqlBuilder/MySqlUpdateBuilder.cs | 2 +- .../SqlSugar/Realization/Oracle/OracleProvider.cs | 6 +++++- .../Realization/PostgreSQL/PostgreSQLProvider.cs | 5 +++++ .../Realization/SqlServer/SqlServerProvider.cs | 7 +++++++ .../SqlSugar/Realization/Sqlite/SqliteProvider.cs | 6 +++++- 10 files changed, 45 insertions(+), 14 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs index 126a5f33a..b5af401cf 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs @@ -326,12 +326,20 @@ namespace SqlSugar internal string GetN() { var N = "N"; - if (_Context.CurrentConnectionConfig.MoreSettings != null && _Context.CurrentConnectionConfig.MoreSettings.OracleDisableNvarchar) + if (_Context.CurrentConnectionConfig.MoreSettings != null && _Context.CurrentConnectionConfig.MoreSettings.DisableNvarchar) { N = ""; } return N; } + internal bool IsVarchar() + { + if (_Context.CurrentConnectionConfig.MoreSettings != null && _Context.CurrentConnectionConfig.MoreSettings.DisableNvarchar) + { + return true; + } + return false; + } private static void CheckDbDependency(ConnectionConfig config) { switch (config.DbType) diff --git a/Src/Asp.Net/SqlSugar/Entities/ConnMoreSettings.cs b/Src/Asp.Net/SqlSugar/Entities/ConnMoreSettings.cs index 04713c46e..8ed33faa0 100644 --- a/Src/Asp.Net/SqlSugar/Entities/ConnMoreSettings.cs +++ b/Src/Asp.Net/SqlSugar/Entities/ConnMoreSettings.cs @@ -9,15 +9,8 @@ namespace SqlSugar { public bool IsAutoRemoveDataCache { get; set; } public bool IsWithNoLockQuery { get; set; } - /// - /// Some MYSQL databases do not support Nvarchar set true - /// - public bool MySqlDisableNvarchar { get; set; } - - /// - ///Oracle nvarchar partial operation disabled - /// - public bool OracleDisableNvarchar { get; set; } + + public bool DisableNvarchar { get; set; } public bool PgSqlIsAutoToLower = true; public int DefaultCacheDurationInSeconds { get; set; } } diff --git a/Src/Asp.Net/SqlSugar/Realization/Dm/DmProvider.cs b/Src/Asp.Net/SqlSugar/Realization/Dm/DmProvider.cs index 8ac928da1..8e06e8963 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Dm/DmProvider.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Dm/DmProvider.cs @@ -109,6 +109,7 @@ namespace SqlSugar if (parameters == null || parameters.Length == 0) return null; DmParameter[] result = new DmParameter[parameters.Length]; int index = 0; + var isVarchar = this.Context.IsVarchar(); foreach (var parameter in parameters) { if (parameter.Value == null) parameter.Value = DBNull.Value; @@ -134,6 +135,10 @@ namespace SqlSugar this.OutputParameters.RemoveAll(it => it.ParameterName == sqlParameter.ParameterName); this.OutputParameters.Add(sqlParameter); } + if (isVarchar && sqlParameter.DbType == System.Data.DbType.String) + { + sqlParameter.DbType = System.Data.DbType.AnsiString; + } ++index; } return result; diff --git a/Src/Asp.Net/SqlSugar/Realization/MySql/MySqlProvider.cs b/Src/Asp.Net/SqlSugar/Realization/MySql/MySqlProvider.cs index 023c329a0..639a017e5 100644 --- a/Src/Asp.Net/SqlSugar/Realization/MySql/MySqlProvider.cs +++ b/Src/Asp.Net/SqlSugar/Realization/MySql/MySqlProvider.cs @@ -89,6 +89,7 @@ namespace SqlSugar if (parameters == null || parameters.Length == 0) return null; MySqlParameter[] result = new MySqlParameter[parameters.Length]; int index = 0; + var isVarchar = this.Context.IsVarchar(); foreach (var parameter in parameters) { if (parameter.Value == null) parameter.Value = DBNull.Value; @@ -113,6 +114,10 @@ namespace SqlSugar this.OutputParameters.RemoveAll(it => it.ParameterName == sqlParameter.ParameterName); this.OutputParameters.Add(sqlParameter); } + if (isVarchar && sqlParameter.DbType == System.Data.DbType.String) + { + sqlParameter.DbType = System.Data.DbType.AnsiString; + } ++index; } return result; diff --git a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlInsertBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlInsertBuilder.cs index 06fdfbcd5..eec51b3e7 100644 --- a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlInsertBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlInsertBuilder.cs @@ -30,7 +30,7 @@ namespace SqlSugar public override object FormatValue(object value) { var n = "N"; - if (this.Context.CurrentConnectionConfig.MoreSettings != null && this.Context.CurrentConnectionConfig.MoreSettings.MySqlDisableNvarchar) + if (this.Context.CurrentConnectionConfig.MoreSettings != null && this.Context.CurrentConnectionConfig.MoreSettings.DisableNvarchar) { n = ""; } diff --git a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs index 2dd4f83a4..03895dbc4 100644 --- a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs @@ -92,7 +92,7 @@ namespace SqlSugar public override object FormatValue(object value) { var n = "N"; - if (this.Context.CurrentConnectionConfig.MoreSettings != null&&this.Context.CurrentConnectionConfig.MoreSettings.MySqlDisableNvarchar) + if (this.Context.CurrentConnectionConfig.MoreSettings != null&&this.Context.CurrentConnectionConfig.MoreSettings.DisableNvarchar) { n = ""; } diff --git a/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs b/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs index 75a6a2e57..8f2f5e356 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Oracle/OracleProvider.cs @@ -115,6 +115,7 @@ namespace SqlSugar if (parameters == null || parameters.Length == 0) return null; OracleParameter[] result = new OracleParameter[parameters.Length]; int index = 0; + var isVarchar = this.Context.IsVarchar(); foreach (var parameter in parameters) { if (parameter.Value == null) parameter.Value = DBNull.Value; @@ -172,7 +173,10 @@ namespace SqlSugar this.OutputParameters.RemoveAll(it => it.ParameterName == sqlParameter.ParameterName); this.OutputParameters.Add(sqlParameter); } - + if (isVarchar && sqlParameter.DbType == System.Data.DbType.String) + { + sqlParameter.DbType = System.Data.DbType.AnsiString; + } ++index; } return result; diff --git a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs index d97184328..7bcc2b5c5 100644 --- a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs +++ b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs @@ -86,6 +86,7 @@ namespace SqlSugar if (parameters == null || parameters.Length == 0) return null; NpgsqlParameter[] result = new NpgsqlParameter[parameters.Length]; int index = 0; + var isVarchar = this.Context.IsVarchar(); foreach (var parameter in parameters) { if (parameter.Value == null) parameter.Value = DBNull.Value; @@ -123,6 +124,10 @@ namespace SqlSugar this.OutputParameters.RemoveAll(it => it.ParameterName == sqlParameter.ParameterName); this.OutputParameters.Add(sqlParameter); } + if (isVarchar && sqlParameter.DbType == System.Data.DbType.String) + { + sqlParameter.DbType = System.Data.DbType.AnsiString; + } ++index; } return result; diff --git a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlServerProvider.cs b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlServerProvider.cs index 640ecf660..0ed776dce 100644 --- a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlServerProvider.cs +++ b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlServerProvider.cs @@ -117,6 +117,7 @@ namespace SqlSugar /// public SqlParameter[] GetSqlParameter(params SugarParameter[] parameters) { + var isVarchar = this.Context.IsVarchar(); if (parameters == null || parameters.Length == 0) return null; SqlParameter[] result = new SqlParameter[parameters.Length]; int index = 0; @@ -150,6 +151,12 @@ namespace SqlSugar this.OutputParameters.RemoveAll(it => it.ParameterName == sqlParameter.ParameterName); this.OutputParameters.Add(sqlParameter); } + + if (isVarchar&&sqlParameter.DbType== System.Data.DbType.String) + { + sqlParameter.DbType =System.Data.DbType.AnsiString; + } + ++index; } return result; diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqliteProvider.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqliteProvider.cs index 412190dde..b9413381f 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqliteProvider.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqliteProvider.cs @@ -82,6 +82,7 @@ namespace SqlSugar /// public override IDataParameter[] ToIDbDataParameter(params SugarParameter[] parameters) { + var isVarchar = this.Context.IsVarchar(); if (parameters == null || parameters.Length == 0) return null; SQLiteParameter[] result = new SQLiteParameter[parameters.Length]; int index = 0; @@ -107,7 +108,10 @@ namespace SqlSugar sqlParameter.DbType = System.Data.DbType.String; sqlParameter.Value = sqlParameter.Value.ObjToString(); } - + if (isVarchar && sqlParameter.DbType == System.Data.DbType.String) + { + sqlParameter.DbType = System.Data.DbType.AnsiString; + } ++index; } return result;