Sqlite Updateable.WhereColumns date type bug

This commit is contained in:
sunkaixuna 2021-10-05 19:58:48 +08:00
parent c4265b98dd
commit ec35f811d9
2 changed files with 27 additions and 6 deletions

View File

@ -14,14 +14,14 @@ namespace SqlSugar
sb.AppendLine(string.Join("\r\n", groupList.Select(t =>
{
var updateTable = string.Format("UPDATE {0} SET", base.GetTableNameStringNoWith);
var setValues = string.Join(",", t.Where(s => !s.IsPrimarykey).Select(m => GetOracleUpdateColums(i,m)).ToArray());
var setValues = string.Join(",", t.Where(s => !s.IsPrimarykey).Select(m => GetOracleUpdateColums(i,m,false)).ToArray());
var pkList = t.Where(s => s.IsPrimarykey).ToList();
List<string> whereList = new List<string>();
foreach (var item in pkList)
{
var isFirst = pkList.First() == item;
var whereString = "";
whereString += GetOracleUpdateColums(i,item);
whereString += GetOracleUpdateColums(i,item,true);
whereList.Add(whereString);
}
i++;
@ -30,12 +30,12 @@ namespace SqlSugar
return sb.ToString();
}
private string GetOracleUpdateColums(int i,DbColumnInfo m)
private string GetOracleUpdateColums(int i,DbColumnInfo m,bool iswhere)
{
return string.Format("\"{0}\"={1}", m.DbColumnName.ToUpper(), FormatValue(i,m.DbColumnName,m.Value));
return string.Format("\"{0}\"={1}", m.DbColumnName.ToUpper(), FormatValue(i,m.DbColumnName,m.Value,iswhere));
}
public object FormatValue(int i,string name,object value)
public object FormatValue(int i,string name,object value,bool iswhere)
{
if (value == null)
{
@ -44,7 +44,7 @@ namespace SqlSugar
else
{
var type = UtilMethods.GetUnderType(value.GetType());
if (type == UtilConstants.DateType)
if (type == UtilConstants.DateType && iswhere == false)
{
var date = value.ObjToDate();
if (date < Convert.ToDateTime("1900-1-1"))
@ -53,6 +53,12 @@ namespace SqlSugar
}
return "'" + date.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'";
}
else if (type == UtilConstants.DateType && iswhere)
{
var parameterName = this.Builder.SqlParameterKeyWord + name + i;
this.Parameters.Add(new SugarParameter(parameterName, value));
return parameterName;
}
else if (type.IsEnum())
{
return Convert.ToInt64(value);

View File

@ -54,8 +54,23 @@ namespace OrmTest
UValidate.Check(sql.Key, @"UPDATE `Diary` SET
`TypeID` = @Const0 WHERE ( `ID` = @ID1 )", "Updateable");
Db.CodeFirst.InitTables<UnitDSsdfa>();
var dt = DateTime.Now;
Db.Insertable(new UnitDSsdfa() { pk = dt, value = 1 }).ExecuteCommand();
var list = new List<UnitDSsdfa>() { new UnitDSsdfa() { pk = dt, value = 2 } };
for (int i = 0; i < 100; i++)
{
list.Add(new UnitDSsdfa() { pk = dt, value = 2 });
}
var res1=Db.Updateable(list).WhereColumns(it=>it.pk).ExecuteCommand();
}
}
public class UnitDSsdfa {
public DateTime pk { get; set; }
public int value { get; set; }
}
public class UnitSaveDiary
{
public int ID { get; set; }