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;