mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-05-17 05:29:33 +08:00
Update ISugarDataConvert
This commit is contained in:
parent
dab0dd61f8
commit
506415f71a
@ -40,6 +40,7 @@ namespace SqlSugar
|
||||
public string ShortName { get; set; }
|
||||
public Dictionary<string, ReSetValueBySqlExpListModel> ReSetValueBySqlExpList { get; set; }
|
||||
public virtual string ReSetValueBySqlExpListType { get; set; }
|
||||
public EntityInfo EntityInfo { get; set; }
|
||||
public virtual string SqlTemplate
|
||||
{
|
||||
get
|
||||
@ -287,11 +288,25 @@ namespace SqlSugar
|
||||
{
|
||||
if (IsWhereColumns == false)
|
||||
{
|
||||
int i = 100000;
|
||||
foreach (var item in PrimaryKeys)
|
||||
{
|
||||
i++;
|
||||
var isFirst = whereString == null;
|
||||
whereString += (isFirst ? " WHERE " : " AND ");
|
||||
whereString += Builder.GetTranslationColumnName(item) + "=" + this.Context.Ado.SqlParameterKeyWord + item;
|
||||
var pkIsSugarDataConverter = GetPkIsSugarDataConverter();
|
||||
if (pkIsSugarDataConverter && GetColumnInfo(item)!=null)
|
||||
{
|
||||
var columnInfo = GetColumnInfo(item);
|
||||
var value=this.DbColumnInfoList.FirstOrDefault(it => it.DbColumnName.EqualCase(item) || it.PropertyName.EqualCase(item))?.Value;
|
||||
var p = UtilMethods.GetParameterConverter(i, this.Context, value, this.EntityInfo, this.EntityInfo?.Columns.First(it => it.DbColumnName.Equals(item) || it.PropertyName.Equals(item)));
|
||||
whereString += Builder.GetTranslationColumnName(item) + "=" + p.ParameterName;
|
||||
this.Parameters.Add(p);
|
||||
}
|
||||
else
|
||||
{
|
||||
whereString += Builder.GetTranslationColumnName(item) + "=" + this.Context.Ado.SqlParameterKeyWord + item;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -311,6 +326,17 @@ namespace SqlSugar
|
||||
return string.Format(SqlTemplate, GetTableNameString, columnsString, whereString);
|
||||
}
|
||||
|
||||
private EntityColumnInfo GetColumnInfo(string item)
|
||||
{
|
||||
var columnInfo= this.EntityInfo?.Columns?.FirstOrDefault(it => it.DbColumnName.Equals(item) || it.PropertyName.Equals(item));
|
||||
return columnInfo;
|
||||
}
|
||||
|
||||
private bool GetPkIsSugarDataConverter()
|
||||
{
|
||||
return this.EntityInfo?.Columns.Any(it => it.IsPrimarykey && it.SqlParameterDbType is Type&&typeof(ISugarDataConverter).IsAssignableFrom((it.SqlParameterDbType as Type))) == true;
|
||||
}
|
||||
|
||||
protected virtual string GetJoinUpdate(string columnsString, ref string whereString)
|
||||
{
|
||||
var tableName = Builder.GetTranslationColumnName(this.TableName);
|
||||
|
@ -379,7 +379,7 @@ namespace SqlSugar
|
||||
|| columns.Contains(it.PropertyName, StringComparer.OrdinalIgnoreCase)
|
||||
|| columns.Contains(it.DbColumnName, StringComparer.OrdinalIgnoreCase)).ToList();
|
||||
}
|
||||
|
||||
UpdateBuilder.EntityInfo = this.EntityInfo;
|
||||
UpdateBuilder.PrimaryKeys = GetPrimaryKeys();
|
||||
if (this.IsWhereColumns)
|
||||
{
|
||||
|
@ -76,6 +76,14 @@ namespace SqlSugar
|
||||
var p = ParameterConverter.Invoke(obj, new object[] { value, 100+index }) as SugarParameter;
|
||||
return p;
|
||||
}
|
||||
internal static SugarParameter GetParameterConverter(int index, ISqlSugarClient db, object value,EntityInfo entity, EntityColumnInfo columnInfo)
|
||||
{
|
||||
var type = columnInfo.SqlParameterDbType as Type;
|
||||
var ParameterConverter = type.GetMethod("ParameterConverter").MakeGenericMethod(columnInfo.PropertyInfo.PropertyType);
|
||||
var obj = Activator.CreateInstance(type);
|
||||
var p = ParameterConverter.Invoke(obj, new object[] { value, 100 + index }) as SugarParameter;
|
||||
return p;
|
||||
}
|
||||
internal static bool IsErrorParameterName(ConnectionConfig connectionConfig,DbColumnInfo columnInfo)
|
||||
{
|
||||
return connectionConfig.MoreSettings?.IsCorrectErrorSqlParameterName == true &&
|
||||
|
Loading…
Reference in New Issue
Block a user