diff --git a/.vs/SqlSugar/v14/.suo b/.vs/SqlSugar/v14/.suo index c060189f8..2a979cdb8 100644 Binary files a/.vs/SqlSugar/v14/.suo and b/.vs/SqlSugar/v14/.suo differ diff --git a/OrmTest/bin/Debug/OrmTest.exe b/OrmTest/bin/Debug/OrmTest.exe index 03419f8d7..dfea54a7f 100644 Binary files a/OrmTest/bin/Debug/OrmTest.exe and b/OrmTest/bin/Debug/OrmTest.exe differ diff --git a/OrmTest/bin/Debug/OrmTest.pdb b/OrmTest/bin/Debug/OrmTest.pdb index e11c0c46e..6696e9a71 100644 Binary files a/OrmTest/bin/Debug/OrmTest.pdb and b/OrmTest/bin/Debug/OrmTest.pdb differ diff --git a/OrmTest/bin/Debug/SqlSugar.dll b/OrmTest/bin/Debug/SqlSugar.dll index 962751266..a843824a5 100644 Binary files a/OrmTest/bin/Debug/SqlSugar.dll and b/OrmTest/bin/Debug/SqlSugar.dll differ diff --git a/OrmTest/bin/Debug/SqlSugar.pdb b/OrmTest/bin/Debug/SqlSugar.pdb index fa6041745..3d3382237 100644 Binary files a/OrmTest/bin/Debug/SqlSugar.pdb and b/OrmTest/bin/Debug/SqlSugar.pdb differ diff --git a/OrmTest/obj/Debug/OrmTest.csprojResolveAssemblyReference.cache b/OrmTest/obj/Debug/OrmTest.csprojResolveAssemblyReference.cache index 1bc101d59..8979a2483 100644 Binary files a/OrmTest/obj/Debug/OrmTest.csprojResolveAssemblyReference.cache and b/OrmTest/obj/Debug/OrmTest.csprojResolveAssemblyReference.cache differ diff --git a/OrmTest/obj/Debug/OrmTest.exe b/OrmTest/obj/Debug/OrmTest.exe index 03419f8d7..dfea54a7f 100644 Binary files a/OrmTest/obj/Debug/OrmTest.exe and b/OrmTest/obj/Debug/OrmTest.exe differ diff --git a/OrmTest/obj/Debug/OrmTest.pdb b/OrmTest/obj/Debug/OrmTest.pdb index e11c0c46e..6696e9a71 100644 Binary files a/OrmTest/obj/Debug/OrmTest.pdb and b/OrmTest/obj/Debug/OrmTest.pdb differ diff --git a/SqlSugar/Abstract/DbProvider/DbAccessory.cs b/SqlSugar/Abstract/DbProvider/DbAccessory.cs index d5829941b..7510e58e9 100644 --- a/SqlSugar/Abstract/DbProvider/DbAccessory.cs +++ b/SqlSugar/Abstract/DbProvider/DbAccessory.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Data; +using System.Data.Common; using System.Data.SqlClient; using System.Linq; using System.Reflection; @@ -14,7 +15,7 @@ namespace SqlSugar protected ICodeFirst _CodeFirst; protected IDbMaintenance _DbMaintenance; protected IDbConnection _DbConnection; - public virtual void SetParSize(SqlParameter[] pars) + public virtual void SetParSize(SugarParameter[] pars) { if (pars != null) { @@ -24,7 +25,7 @@ namespace SqlSugar } } } - public virtual void SetParSize(SqlParameter par) + public virtual void SetParSize(SugarParameter par) { int size = par.Size; if (size < 4000) @@ -33,19 +34,14 @@ namespace SqlSugar } } - public virtual void SetSqlDbType(PropertyInfo prop, SqlParameter par) + public virtual void SetSqlDbType(PropertyInfo prop, SugarParameter par) { - var isNullable = false; - var isByteArray = PubMethod.GetUnderType(prop, ref isNullable) == typeof(byte[]); - if (isByteArray) - { - par.SqlDbType = SqlDbType.VarBinary; - } + } - protected virtual SqlParameter[] GetParameters(object obj, PropertyInfo[] propertyInfo,string sqlParameterKeyWord) + protected virtual SugarParameter[] GetParameters(object obj, PropertyInfo[] propertyInfo,string sqlParameterKeyWord) { - List listParams = new List(); + List listParams = new List(); if (obj != null) { var type = obj.GetType(); @@ -55,7 +51,7 @@ namespace SqlSugar if (type == PubConst.DicArraySO) { var newObj = (Dictionary)obj; - var pars = newObj.Select(it => new SqlParameter(sqlParameterKeyWord + it.Key, it.Value)); + var pars = newObj.Select(it => new SugarParameter(sqlParameterKeyWord + it.Key, it.Value)); foreach (var par in pars) { SetParSize(par); @@ -66,7 +62,7 @@ namespace SqlSugar { var newObj = (Dictionary)obj; - var pars = newObj.Select(it => new SqlParameter(sqlParameterKeyWord + it.Key, it.Value)); + var pars = newObj.Select(it => new SugarParameter(sqlParameterKeyWord + it.Key, it.Value)); foreach (var par in pars) { SetParSize(par); @@ -96,14 +92,14 @@ namespace SqlSugar if (value == null || value.Equals(DateTime.MinValue)) value = DBNull.Value; if (r.Name.ToLower().Contains("hierarchyid")) { - var par = new SqlParameter(sqlParameterKeyWord + r.Name, SqlDbType.Udt); + var par = new SugarParameter(sqlParameterKeyWord + r.Name, SqlDbType.Udt); par.UdtTypeName = "HIERARCHYID"; par.Value = value; listParams.Add(par); } else { - var par = new SqlParameter(sqlParameterKeyWord + r.Name, value); + var par = new SugarParameter(sqlParameterKeyWord + r.Name, value); SetParSize(par); if (value == DBNull.Value) {//防止文件类型报错 diff --git a/SqlSugar/Abstract/DbProvider/DbProvider.cs b/SqlSugar/Abstract/DbProvider/DbProvider.cs index 1bedf40d9..9ff3b389b 100644 --- a/SqlSugar/Abstract/DbProvider/DbProvider.cs +++ b/SqlSugar/Abstract/DbProvider/DbProvider.cs @@ -125,7 +125,7 @@ namespace SqlSugar { return GetString(sql, this.GetParameters(pars)); } - public virtual string GetString(string sql, params SqlParameter[] pars) + public virtual string GetString(string sql, params SugarParameter[] pars) { return Convert.ToString(GetScalar(sql, pars)); } @@ -133,24 +133,24 @@ namespace SqlSugar { return GetInt(sql, this.GetParameters(pars)); } - public virtual int GetInt(string sql, params SqlParameter[] pars) + public virtual int GetInt(string sql, params SugarParameter[] pars) { return Convert.ToInt32(GetScalar(sql, pars)); } - public virtual Double GetDouble(string sql, params SqlParameter[] pars) + public virtual Double GetDouble(string sql, params SugarParameter[] pars) { return Convert.ToDouble(GetScalar(sql, pars)); } - public virtual decimal GetDecimal(string sql, params SqlParameter[] pars) + public virtual decimal GetDecimal(string sql, params SugarParameter[] pars) { return Convert.ToDecimal(GetScalar(sql, pars)); } - public virtual DateTime GetDateTime(string sql, params SqlParameter[] pars) + public virtual DateTime GetDateTime(string sql, params SugarParameter[] pars) { return Convert.ToDateTime(GetScalar(sql, pars)); } - public virtual SqlParameter[] GetParameters(object obj, PropertyInfo[] propertyInfo = null) + public virtual SugarParameter[] GetParameters(object obj, PropertyInfo[] propertyInfo = null) { if (obj == null) return null; return base.GetParameters(obj, propertyInfo,this.Context.SqlBuilder.SqlParameterKeyWord); @@ -180,16 +180,16 @@ namespace SqlSugar this.Transaction = null; } } - public abstract IDbDataParameter[] ToIDbDataParameter(params SqlParameter[] pars); + public abstract SugarParameter[] ToIDbDataParameter(params SugarParameter[] pars); public abstract void SetCommandToAdapter(IDataAdapter adapter, IDbCommand command); public abstract IDataAdapter GetAdapter(); - public abstract IDbCommand GetCommand(string sql, SqlParameter[] pars); + public abstract IDbCommand GetCommand(string sql, SugarParameter[] pars); public abstract IDbConnection Connection { get; set; } public abstract void BeginTran(string transactionName);//Only SqlServer public abstract void BeginTran(IsolationLevel iso, string transactionName);//Only SqlServer #region Core - public virtual int ExecuteCommand(string sql, params SqlParameter[] pars) + public virtual int ExecuteCommand(string sql, params SugarParameter[] pars) { base.SetParSize(pars); ExecLogEvent(sql, pars, true); @@ -200,7 +200,7 @@ namespace SqlSugar ExecLogEvent(sql, pars, false); return count; } - public virtual IDataReader GetDataReader(string sql, params SqlParameter[] pars) + public virtual IDataReader GetDataReader(string sql, params SugarParameter[] pars) { base.SetParSize(pars); ExecLogEvent(sql, pars, true); @@ -211,7 +211,7 @@ namespace SqlSugar ExecLogEvent(sql, pars, false); return sqlDataReader; } - public virtual DataSet GetDataSetAll(string sql, params SqlParameter[] pars) + public virtual DataSet GetDataSetAll(string sql, params SugarParameter[] pars) { base.SetParSize(pars); ExecLogEvent(sql, pars, true); @@ -225,7 +225,7 @@ namespace SqlSugar ExecLogEvent(sql, pars, false); return ds; } - public virtual object GetScalar(string sql, params SqlParameter[] pars) + public virtual object GetScalar(string sql, params SugarParameter[] pars) { base.SetParSize(pars); ExecLogEvent(sql, pars, true); @@ -239,7 +239,7 @@ namespace SqlSugar } #endregion - public virtual DataTable GetDataTable(string sql, params SqlParameter[] pars) + public virtual DataTable GetDataTable(string sql, params SugarParameter[] pars) { var ds = GetDataSetAll(sql, pars); if (ds.Tables.Count != 0 && ds.Tables.Count > 0) return ds.Tables[0]; @@ -265,7 +265,7 @@ namespace SqlSugar { return ExecuteCommand(sql, GetParameters(pars)); } - public virtual void ExecLogEvent(string sql, SqlParameter[] pars, bool isStarting = true) + public virtual void ExecLogEvent(string sql, SugarParameter[] pars, bool isStarting = true) { if (this.IsEnableLogEvent) { diff --git a/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs b/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs index 715ecf3e2..17961297b 100644 --- a/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs +++ b/SqlSugar/Abstract/QueryableProvider/QueryableAccessory.cs @@ -9,19 +9,19 @@ namespace SqlSugar { public class QueryableAccessory { - protected List _Pars; + protected List _Pars; protected void AddPars(object whereObj, SqlSugarClient context) { var sqlParsArray = context.Database.GetParameters(whereObj); if (_Pars == null) - _Pars = new List(); + _Pars = new List(); if (sqlParsArray != null) _Pars.AddRange(sqlParsArray); } - protected void AddPars(List pars, SqlSugarClient context) + protected void AddPars(List pars, SqlSugarClient context) { if (_Pars == null) - _Pars = new List(); + _Pars = new List(); if (pars != null) _Pars.AddRange(pars); } diff --git a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 8a50523ea..1cf25bcab 100644 --- a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -15,9 +15,9 @@ namespace SqlSugar public IDb Db { get { return Context.Database; } } public IDbBind Bind { get { return this.Db.DbBind; } } public ISqlBuilder SqlBuilder { get { return this.Context.SqlBuilder; } } - public List Pars + public List Pars { - get { return PubMethod.IsNullReturnNew>(base._Pars); } + get { return PubMethod.IsNullReturnNew>(base._Pars); } set { base._Pars = value; } } public void Clear() diff --git a/SqlSugar/Databases/SqlServer/Db/SqlServerDb.cs b/SqlSugar/Databases/SqlServer/Db/SqlServerDb.cs index b8fb1ce6c..6501ea487 100644 --- a/SqlSugar/Databases/SqlServer/Db/SqlServerDb.cs +++ b/SqlSugar/Databases/SqlServer/Db/SqlServerDb.cs @@ -46,7 +46,7 @@ namespace SqlSugar { return new SqlDataAdapter(); } - public override IDbCommand GetCommand(string sql, SqlParameter[] pars) + public override IDbCommand GetCommand(string sql, SugarParameter[] pars) { SqlCommand sqlCommand = new SqlCommand(sql, (SqlConnection)this.Connection); sqlCommand.CommandType = this.CommandType; @@ -73,7 +73,7 @@ namespace SqlSugar /// /// /// - public override IDbDataParameter[] ToIDbDataParameter(params SqlParameter[] pars) + public override SugarParameter[] ToIDbDataParameter(params SugarParameter[] pars) { return pars; } diff --git a/SqlSugar/Entities/SugarParameter.cs b/SqlSugar/Entities/SugarParameter.cs new file mode 100644 index 000000000..2e7dd2753 --- /dev/null +++ b/SqlSugar/Entities/SugarParameter.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Common; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SqlSugar +{ + public class SugarParameter : DbParameter + { + + public SugarParameter(string name, object value) + { + this.Value = value; + this.ParameterName = name; + } + + public override System.Data.DbType DbType + { + get;set; + } + + public override ParameterDirection Direction + { + get;set; + } + + public override bool IsNullable + { + get;set; + } + + public override string ParameterName + { + get;set; + } + + public override int Size + { + get;set; + } + + public override string SourceColumn + { + get;set; + } + + public override bool SourceColumnNullMapping + { + get;set; + } + public string UdtTypeName { get; internal set; } + public override object Value + { + get;set; + } + + public override void ResetDbType() + { + this.DbType = System.Data.DbType.String; + } + } +} diff --git a/SqlSugar/Interface/IDb.cs b/SqlSugar/Interface/IDb.cs index 11d2763ec..02c56982f 100644 --- a/SqlSugar/Interface/IDb.cs +++ b/SqlSugar/Interface/IDb.cs @@ -13,10 +13,10 @@ namespace SqlSugar { IDbConnection Connection { get; set; } IDbTransaction Transaction { get; set; } - IDbDataParameter[] ToIDbDataParameter(params SqlParameter [] pars); - SqlParameter[] GetParameters(object obj, PropertyInfo[] propertyInfo = null); + SugarParameter[] ToIDbDataParameter(params SugarParameter[] pars); + SugarParameter[] GetParameters(object obj, PropertyInfo[] propertyInfo = null); SqlSugarClient Context { get; set; } - void ExecLogEvent(string sql, SqlParameter[] pars, bool isStarting = true); + void ExecLogEvent(string sql, SugarParameter[] pars, bool isStarting = true); IConnectionConfig MasterConnectionConfig { get; set; } List SlaveConnectionConfigs { get; set; } @@ -35,24 +35,24 @@ namespace SqlSugar void SetCommandToAdapter(IDataAdapter adapter,IDbCommand command); IDataAdapter GetAdapter(); - IDbCommand GetCommand(string sql, SqlParameter[] pars); + IDbCommand GetCommand(string sql, SugarParameter[] pars); DataTable GetDataTable(string sql, object pars); - DataTable GetDataTable(string sql, params SqlParameter[] pars); + DataTable GetDataTable(string sql, params SugarParameter[] pars); DataSet GetDataSetAll(string sql, object pars); - DataSet GetDataSetAll(string sql, params SqlParameter[] pars); + DataSet GetDataSetAll(string sql, params SugarParameter[] pars); IDataReader GetDataReader(string sql,object pars); - IDataReader GetDataReader(string sql, params SqlParameter[] pars); + IDataReader GetDataReader(string sql, params SugarParameter[] pars); object GetScalar(string sql, object pars); - object GetScalar(string sql, params SqlParameter[] pars); + object GetScalar(string sql, params SugarParameter[] pars); int ExecuteCommand(string sql, object pars); - int ExecuteCommand(string sql, params SqlParameter[] pars); + int ExecuteCommand(string sql, params SugarParameter[] pars); string GetString(string sql, object pars); - string GetString(string sql, params SqlParameter[] pars); + string GetString(string sql, params SugarParameter[] pars); int GetInt(string sql, object pars); - int GetInt(string sql, params SqlParameter[] pars); - Double GetDouble(string sql, params SqlParameter[] pars); - decimal GetDecimal(string sql, params SqlParameter[] pars); - DateTime GetDateTime(string sql, params SqlParameter[] pars); + int GetInt(string sql, params SugarParameter[] pars); + Double GetDouble(string sql, params SugarParameter[] pars); + decimal GetDecimal(string sql, params SugarParameter[] pars); + DateTime GetDateTime(string sql, params SugarParameter[] pars); void Dispose(); void Close(); diff --git a/SqlSugar/Interface/IQueryable.cs b/SqlSugar/Interface/IQueryable.cs index d8a45c37c..3ec2a6844 100644 --- a/SqlSugar/Interface/IQueryable.cs +++ b/SqlSugar/Interface/IQueryable.cs @@ -10,7 +10,7 @@ namespace SqlSugar public partial interface ISugarQueryable where T : class, new() { SqlSugarClient Context { get; set; } - List Pars { get; set; } + List Pars { get; set; } ISugarQueryable Where(Expression> expression); diff --git a/SqlSugar/SqlSugar.csproj b/SqlSugar/SqlSugar.csproj index f740d7d25..43912cf9d 100644 --- a/SqlSugar/SqlSugar.csproj +++ b/SqlSugar/SqlSugar.csproj @@ -97,6 +97,7 @@ + diff --git a/SqlSugar/bin/Debug/SqlSugar.dll b/SqlSugar/bin/Debug/SqlSugar.dll index 962751266..a843824a5 100644 Binary files a/SqlSugar/bin/Debug/SqlSugar.dll and b/SqlSugar/bin/Debug/SqlSugar.dll differ diff --git a/SqlSugar/bin/Debug/SqlSugar.pdb b/SqlSugar/bin/Debug/SqlSugar.pdb index fa6041745..3d3382237 100644 Binary files a/SqlSugar/bin/Debug/SqlSugar.pdb and b/SqlSugar/bin/Debug/SqlSugar.pdb differ diff --git a/SqlSugar/obj/Debug/SqlSugar.dll b/SqlSugar/obj/Debug/SqlSugar.dll index 962751266..a843824a5 100644 Binary files a/SqlSugar/obj/Debug/SqlSugar.dll and b/SqlSugar/obj/Debug/SqlSugar.dll differ diff --git a/SqlSugar/obj/Debug/SqlSugar.pdb b/SqlSugar/obj/Debug/SqlSugar.pdb index fa6041745..3d3382237 100644 Binary files a/SqlSugar/obj/Debug/SqlSugar.pdb and b/SqlSugar/obj/Debug/SqlSugar.pdb differ