mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-05-17 21:49: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 string ShortName { get; set; }
|
||||||
public Dictionary<string, ReSetValueBySqlExpListModel> ReSetValueBySqlExpList { get; set; }
|
public Dictionary<string, ReSetValueBySqlExpListModel> ReSetValueBySqlExpList { get; set; }
|
||||||
public virtual string ReSetValueBySqlExpListType { get; set; }
|
public virtual string ReSetValueBySqlExpListType { get; set; }
|
||||||
|
public EntityInfo EntityInfo { get; set; }
|
||||||
public virtual string SqlTemplate
|
public virtual string SqlTemplate
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@ -287,11 +288,25 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
if (IsWhereColumns == false)
|
if (IsWhereColumns == false)
|
||||||
{
|
{
|
||||||
|
int i = 100000;
|
||||||
foreach (var item in PrimaryKeys)
|
foreach (var item in PrimaryKeys)
|
||||||
{
|
{
|
||||||
|
i++;
|
||||||
var isFirst = whereString == null;
|
var isFirst = whereString == null;
|
||||||
whereString += (isFirst ? " WHERE " : " AND ");
|
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);
|
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)
|
protected virtual string GetJoinUpdate(string columnsString, ref string whereString)
|
||||||
{
|
{
|
||||||
var tableName = Builder.GetTranslationColumnName(this.TableName);
|
var tableName = Builder.GetTranslationColumnName(this.TableName);
|
||||||
|
@ -379,7 +379,7 @@ namespace SqlSugar
|
|||||||
|| columns.Contains(it.PropertyName, StringComparer.OrdinalIgnoreCase)
|
|| columns.Contains(it.PropertyName, StringComparer.OrdinalIgnoreCase)
|
||||||
|| columns.Contains(it.DbColumnName, StringComparer.OrdinalIgnoreCase)).ToList();
|
|| columns.Contains(it.DbColumnName, StringComparer.OrdinalIgnoreCase)).ToList();
|
||||||
}
|
}
|
||||||
|
UpdateBuilder.EntityInfo = this.EntityInfo;
|
||||||
UpdateBuilder.PrimaryKeys = GetPrimaryKeys();
|
UpdateBuilder.PrimaryKeys = GetPrimaryKeys();
|
||||||
if (this.IsWhereColumns)
|
if (this.IsWhereColumns)
|
||||||
{
|
{
|
||||||
|
@ -76,6 +76,14 @@ namespace SqlSugar
|
|||||||
var p = ParameterConverter.Invoke(obj, new object[] { value, 100+index }) as SugarParameter;
|
var p = ParameterConverter.Invoke(obj, new object[] { value, 100+index }) as SugarParameter;
|
||||||
return p;
|
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)
|
internal static bool IsErrorParameterName(ConnectionConfig connectionConfig,DbColumnInfo columnInfo)
|
||||||
{
|
{
|
||||||
return connectionConfig.MoreSettings?.IsCorrectErrorSqlParameterName == true &&
|
return connectionConfig.MoreSettings?.IsCorrectErrorSqlParameterName == true &&
|
||||||
|
Loading…
Reference in New Issue
Block a user