Update no parameter

This commit is contained in:
sunkaixuan
2025-02-12 11:55:48 +08:00
parent 6fe64b51dc
commit d2c529ec8b
2 changed files with 42 additions and 15 deletions

View File

@@ -280,7 +280,7 @@ namespace SqlSugar
} }
private int GetDbColumnIndex = 0; private int GetDbColumnIndex = 0;
public virtual string GetDbColumn(DbColumnInfo columnInfo ,object name) public virtual string GetDbColumn(DbColumnInfo columnInfo ,object name)
{ {
if (columnInfo.InsertServerTime) if (columnInfo.InsertServerTime)
{ {
@@ -296,11 +296,11 @@ namespace SqlSugar
} }
else if (columnInfo.InsertSql.HasValue()) else if (columnInfo.InsertSql.HasValue())
{ {
if (columnInfo.InsertSql.Contains("{0}")) if (columnInfo.InsertSql.Contains("{0}"))
{ {
if (columnInfo.Value == null) if (columnInfo.Value == null)
{ {
return string.Format(columnInfo.InsertSql, "null").Replace("'null'","null"); return string.Format(columnInfo.InsertSql, "null").Replace("'null'", "null");
} }
else else
{ {
@@ -309,7 +309,7 @@ namespace SqlSugar
} }
return columnInfo.InsertSql; return columnInfo.InsertSql;
} }
else if (columnInfo.SqlParameterDbType is Type && (Type)columnInfo.SqlParameterDbType == UtilConstants.SqlConvertType) else if (columnInfo.SqlParameterDbType is Type && IsNoParameterConvert(columnInfo))
{ {
var type = columnInfo.SqlParameterDbType as Type; var type = columnInfo.SqlParameterDbType as Type;
var ParameterConverter = type.GetMethod("ParameterConverter").MakeGenericMethod(typeof(string)); var ParameterConverter = type.GetMethod("ParameterConverter").MakeGenericMethod(typeof(string));
@@ -319,17 +319,17 @@ namespace SqlSugar
} }
else if (columnInfo.SqlParameterDbType is Type) else if (columnInfo.SqlParameterDbType is Type)
{ {
var type=columnInfo.SqlParameterDbType as Type; var type = columnInfo.SqlParameterDbType as Type;
var ParameterConverter=type.GetMethod("ParameterConverter").MakeGenericMethod(columnInfo.PropertyType); var ParameterConverter = type.GetMethod("ParameterConverter").MakeGenericMethod(columnInfo.PropertyType);
var obj=Activator.CreateInstance(type); var obj = Activator.CreateInstance(type);
var p = ParameterConverter.Invoke(obj,new object[] {columnInfo.Value, GetDbColumnIndex }) as SugarParameter; var p = ParameterConverter.Invoke(obj, new object[] { columnInfo.Value, GetDbColumnIndex }) as SugarParameter;
GetDbColumnIndex++; GetDbColumnIndex++;
//this.Parameters.RemoveAll(it => it.ParameterName == it.ParameterName); //this.Parameters.RemoveAll(it => it.ParameterName == it.ParameterName);
UtilMethods.ConvertParameter(p,this.Builder); UtilMethods.ConvertParameter(p, this.Builder);
this.Parameters.Add(p); this.Parameters.Add(p);
return p.ParameterName; return p.ParameterName;
} }
else if (columnInfo.DataType?.Equals("nvarchar2")==true) else if (columnInfo.DataType?.Equals("nvarchar2") == true)
{ {
var pname = Builder.SqlParameterKeyWord + columnInfo.DbColumnName + "_ts" + GetDbColumnIndex; var pname = Builder.SqlParameterKeyWord + columnInfo.DbColumnName + "_ts" + GetDbColumnIndex;
var p = new SugarParameter(pname, columnInfo.Value); var p = new SugarParameter(pname, columnInfo.Value);
@@ -338,7 +338,7 @@ namespace SqlSugar
GetDbColumnIndex++; GetDbColumnIndex++;
return pname; return pname;
} }
else if (columnInfo.PropertyType!=null&&columnInfo.PropertyType.Name == "TimeOnly" ) else if (columnInfo.PropertyType != null && columnInfo.PropertyType.Name == "TimeOnly")
{ {
var timeSpan = UtilMethods.TimeOnlyToTimeSpan(columnInfo.Value); var timeSpan = UtilMethods.TimeOnlyToTimeSpan(columnInfo.Value);
var pname = Builder.SqlParameterKeyWord + columnInfo.DbColumnName + "_ts" + GetDbColumnIndex; var pname = Builder.SqlParameterKeyWord + columnInfo.DbColumnName + "_ts" + GetDbColumnIndex;
@@ -352,7 +352,7 @@ namespace SqlSugar
var pname = Builder.SqlParameterKeyWord + columnInfo.DbColumnName + "_ts" + GetDbColumnIndex; var pname = Builder.SqlParameterKeyWord + columnInfo.DbColumnName + "_ts" + GetDbColumnIndex;
if (timeSpan == null) if (timeSpan == null)
{ {
this.Parameters.Add(new SugarParameter(pname, null) { DbType=System.Data.DbType.Date }); this.Parameters.Add(new SugarParameter(pname, null) { DbType = System.Data.DbType.Date });
} }
else else
{ {
@@ -376,6 +376,19 @@ namespace SqlSugar
} }
} }
private static bool IsNoParameterConvert(DbColumnInfo columnInfo)
{
if (columnInfo.SqlParameterDbType is Type t)
{
var isAssignableFrom = typeof(DbConvert.NoParameterCommonPropertyConvert).IsAssignableFrom(t);
if (isAssignableFrom)
{
return isAssignableFrom;
}
}
return (Type)columnInfo.SqlParameterDbType == UtilConstants.SqlConvertType;
}
#endregion #endregion
} }
} }

View File

@@ -458,11 +458,11 @@ namespace SqlSugar
{ {
return LambdaExpressions.DbMehtods.GetDate(); return LambdaExpressions.DbMehtods.GetDate();
} }
else if (columnInfo.PropertyType.FullName == "NetTopologySuite.Geometries.Geometry") else if (columnInfo.PropertyType.FullName == "NetTopologySuite.Geometries.Geometry")
{ {
var pname = Builder.SqlParameterKeyWord + "Geometry" + GetDbColumnIndex; var pname = Builder.SqlParameterKeyWord + "Geometry" + GetDbColumnIndex;
var p = new SugarParameter(pname, columnInfo.Value); var p = new SugarParameter(pname, columnInfo.Value);
p.DbType= System.Data.DbType.Object; p.DbType = System.Data.DbType.Object;
this.Parameters.Add(p); this.Parameters.Add(p);
GetDbColumnIndex++; GetDbColumnIndex++;
return pname; return pname;
@@ -501,7 +501,7 @@ namespace SqlSugar
} }
return columnInfo.UpdateSql; return columnInfo.UpdateSql;
} }
else if (columnInfo.SqlParameterDbType is Type && (Type)columnInfo.SqlParameterDbType == UtilConstants.SqlConvertType) else if (columnInfo.SqlParameterDbType is Type && IsNoParameterConvert(columnInfo))
{ {
var type = columnInfo.SqlParameterDbType as Type; var type = columnInfo.SqlParameterDbType as Type;
var ParameterConverter = type.GetMethod("ParameterConverter").MakeGenericMethod(typeof(string)); var ParameterConverter = type.GetMethod("ParameterConverter").MakeGenericMethod(typeof(string));
@@ -564,6 +564,20 @@ namespace SqlSugar
return name + ""; return name + "";
} }
} }
private static bool IsNoParameterConvert(DbColumnInfo columnInfo)
{
if (columnInfo.SqlParameterDbType is Type t)
{
var isAssignableFrom = typeof(DbConvert.NoParameterCommonPropertyConvert).IsAssignableFrom(t);
if (isAssignableFrom)
{
return isAssignableFrom;
}
}
return (Type)columnInfo.SqlParameterDbType == UtilConstants.SqlConvertType;
}
private bool IsSingleSetExp(DbColumnInfo columnInfo) private bool IsSingleSetExp(DbColumnInfo columnInfo)
{ {
return this.ReSetValueBySqlExpList != null && return this.ReSetValueBySqlExpList != null &&