- 修复 InsertDict 部分新功能遗留问题(特别是 Oracle);

This commit is contained in:
2881099
2022-04-09 22:40:52 +08:00
parent b9a21f6c11
commit ecd27fb3ae
28 changed files with 69 additions and 52 deletions

View File

@ -21,7 +21,9 @@ namespace FreeSql.ClickHouse
{
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
var dbtype = (DbType?)_orm.CodeFirst.GetDbInfo(type)?.type;
DbParameter ret = new ClickHouseDbParameter { ParameterName = parameterName, DbType = dbtype ?? default, Value = value };//QuoteParamterName(parameterName)
DbParameter ret = new ClickHouseDbParameter { ParameterName = parameterName };//QuoteParamterName(parameterName)
if (dbtype != null) ret.DbType = dbtype.Value;
ret.Value = value;
if (col != null)
{
var dbtype2 = (DbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeText = col.DbTypeText, DbTypeTextFull = col.Attribute.DbType, MaxLength = col.DbSize });

View File

@ -40,7 +40,9 @@ namespace FreeSql.Dameng
}
break;
}
var ret = new DmParameter { ParameterName = QuoteParamterName(parameterName), DmSqlType = dbtype ?? default, Value = value };
var ret = new DmParameter { ParameterName = QuoteParamterName(parameterName) };
if (dbtype != null) ret.DmSqlType = dbtype.Value;
ret.Value = value;
_params?.Add(ret);
return ret;
}

View File

@ -35,7 +35,7 @@ namespace FreeSql.Firebird
break;
}
}
ret.FbDbType = dbtype ?? default;
if (dbtype != null) ret.FbDbType = dbtype.Value;
_params?.Add(ret);
return ret;
}

View File

@ -35,7 +35,7 @@ namespace FreeSql.GBase
break;
}
}
ret.OdbcType = dbtype ?? default;
if (dbtype != null) ret.OdbcType = dbtype.Value;
_params?.Add(ret);
return ret;
}

View File

@ -46,7 +46,10 @@ namespace FreeSql.MySql
if (value != null) ret.Value = (value as MygisGeometry).AsText();
}
else
ret.MySqlDbType = dbtype ?? default;
{
if (dbtype != null)
ret.MySqlDbType = dbtype.Value;
}
_params?.Add(ret);
return ret;
}

View File

@ -44,7 +44,8 @@ namespace FreeSql.MySql
}
else
{
ret.MySqlDbType = dbtype ?? default;
if (dbtype != null)
ret.MySqlDbType = dbtype.Value;
if (ret.MySqlDbType == MySqlDbType.Enum && value != null)
ret.Value = EnumValueToMySql(value);
}

View File

@ -36,7 +36,9 @@ namespace FreeSql.Odbc.Dameng
value = string.Concat(value);
break;
}
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), OdbcType = dbtype ?? default, Value = value };
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName) };
if (dbtype != null) ret.OdbcType = dbtype.Value;
ret.Value = value;
_params?.Add(ret);
return ret;
}
@ -62,7 +64,9 @@ namespace FreeSql.Odbc.Dameng
value = string.Concat(value);
break;
}
var ret = new OdbcParameter { ParameterName = $":{name}", OdbcType = dbtype ?? default, Value = value };
var ret = new OdbcParameter { ParameterName = $":{name}" };
if (dbtype != null) ret.OdbcType = dbtype.Value;
ret.Value = value;
return ret;
});

View File

@ -18,9 +18,10 @@ namespace FreeSql.Odbc.Default
{
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
if (value?.Equals(DateTime.MinValue) == true) value = new DateTime(1970, 1, 1);
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName) };
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;
if (tp != null) ret.OdbcType = (OdbcType)tp.Value;
ret.Value = value;
_params?.Add(ret);
return ret;
}
@ -29,9 +30,10 @@ namespace FreeSql.Odbc.Default
Utils.GetDbParamtersByObject<OdbcParameter>(sql, obj, null, (name, type, value) =>
{
if (value?.Equals(DateTime.MinValue) == true) value = new DateTime(1970, 1, 1);
var ret = new OdbcParameter { ParameterName = $"@{name}", Value = value };
var ret = new OdbcParameter { ParameterName = $"@{name}" };
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;
if (tp != null) ret.OdbcType = (OdbcType)tp.Value;
ret.Value = value;
return ret;
});

View File

@ -18,10 +18,10 @@ namespace FreeSql.Odbc.MySql
public override DbParameter AppendParamter(List<DbParameter> _params, string parameterName, ColumnInfo col, Type type, object value)
{
if (string.IsNullOrEmpty(parameterName)) parameterName = $"p_{_params?.Count}";
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName) };
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;
if (tp != null)
ret.OdbcType = (OdbcType)tp.Value;
if (tp != null) ret.OdbcType = (OdbcType)tp.Value;
ret.Value = value;
_params?.Add(ret);
return ret;
}
@ -29,10 +29,10 @@ namespace FreeSql.Odbc.MySql
public override DbParameter[] GetDbParamtersByObject(string sql, object obj) =>
Utils.GetDbParamtersByObject<OdbcParameter>(sql, obj, null, (name, type, value) =>
{
var ret = new OdbcParameter { ParameterName = $"?{name}", Value = value };
var ret = new OdbcParameter { ParameterName = $"?{name}" };
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;
if (tp != null)
ret.OdbcType = (OdbcType)tp.Value;
if (tp != null) ret.OdbcType = (OdbcType)tp.Value;
ret.Value = value;
return ret;
});

View File

@ -36,7 +36,9 @@ namespace FreeSql.Odbc.Oracle
value = string.Concat(value);
break;
}
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName), OdbcType = dbtype ?? default, Value = value };
var ret = new OdbcParameter { ParameterName = QuoteParamterName(parameterName) };
if (dbtype != null) ret.OdbcType = dbtype.Value;
ret.Value = value;
_params?.Add(ret);
return ret;
}
@ -62,7 +64,9 @@ namespace FreeSql.Odbc.Oracle
value = string.Concat(value);
break;
}
var ret = new OdbcParameter { ParameterName = $":{name}", OdbcType = dbtype ?? default, Value = value };
var ret = new OdbcParameter { ParameterName = $":{name}" };
if (dbtype != null) ret.OdbcType = dbtype.Value;
ret.Value = value;
return ret;
});

View File

@ -41,9 +41,9 @@ namespace FreeSql.Odbc.SqlServer
var sql = sb.ToString();
var validx = sql.IndexOf(" WHERE ");
if (validx == -1) throw new ArgumentException("找不到 WHERE ");
sb.Clear().Append(sql.Substring(0, validx))
sql = sb.Clear().Append(sql.Substring(0, validx))
.Append(sbret)
.Append(sql.Substring(validx));
.Append(sql.Substring(validx)).ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
@ -98,9 +98,9 @@ namespace FreeSql.Odbc.SqlServer
var sql = sb.ToString();
var validx = sql.IndexOf(" WHERE ");
if (validx == -1) throw new ArgumentException("找不到 WHERE ");
sb.Clear().Append(sql.Substring(0, validx))
sql = sb.Clear().Append(sql.Substring(0, validx))
.Append(sbret)
.Append(sql.Substring(validx));
.Append(sql.Substring(validx)).ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);

View File

@ -45,11 +45,11 @@ namespace FreeSql.Odbc.SqlServer
}
}
var sql = sb.ToString();
var validx = sql.IndexOf(" WHERE ");
var validx = sql.IndexOf(" \r\nWHERE ");
if (validx == -1) throw new ArgumentException("找不到 WHERE ");
sb.Clear().Append(sql.Substring(0, validx))
sql = sb.Clear().Append(sql.Substring(0, validx))
.Append(sbret)
.Append(sql.Substring(validx));
.Append(sql.Substring(validx)).ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
@ -138,11 +138,11 @@ namespace FreeSql.Odbc.SqlServer
}
}
var sql = sb.ToString();
var validx = sql.IndexOf(" WHERE ");
var validx = sql.IndexOf(" \r\nWHERE ");
if (validx == -1) throw new ArgumentException("找不到 WHERE ");
sb.Clear().Append(sql.Substring(0, validx))
sql = sb.Clear().Append(sql.Substring(0, validx))
.Append(sbret)
.Append(sql.Substring(validx));
.Append(sql.Substring(validx)).ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);

View File

@ -25,8 +25,9 @@ namespace FreeSql.Oracle
else value = (bool)value == true ? 1 : 0;
dbtype = OracleDbType.Int16;
}
var ret = new OracleParameter { ParameterName = QuoteParamterName(parameterName), Value = value };
var ret = new OracleParameter { ParameterName = QuoteParamterName(parameterName) };
if (dbtype != null) ret.OracleDbType = dbtype.Value;
ret.Value = value;
if (col != null)
{
var dbtype2 = (OracleDbType)_orm.DbFirst.GetDbType(new DatabaseModel.DbColumnInfo { DbTypeTextFull = col.Attribute.DbType?.Replace("NOT NULL", "").Replace(" NULL", "").Trim(), DbTypeText = col.DbTypeText });
@ -63,8 +64,9 @@ namespace FreeSql.Oracle
else value = (bool)value == true ? 1 : 0;
dbtype = OracleDbType.Int16;
}
var ret = new OracleParameter { ParameterName = $":{name}", Value = value };
var ret = new OracleParameter { ParameterName = $":{name}" };
if (dbtype != null) ret.OracleDbType = dbtype.Value;
ret.Value = value;
return ret;
});

View File

@ -41,9 +41,9 @@ namespace FreeSql.SqlServer.Curd
var sql = sb.ToString();
var validx = sql.IndexOf(" WHERE ");
if (validx == -1) throw new ArgumentException("找不到 WHERE ");
sb.Clear().Append(sql.Substring(0, validx))
sql = sb.Clear().Append(sql.Substring(0, validx))
.Append(sbret)
.Append(sql.Substring(validx));
.Append(sql.Substring(validx)).ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
@ -98,9 +98,9 @@ namespace FreeSql.SqlServer.Curd
var sql = sb.ToString();
var validx = sql.IndexOf(" WHERE ");
if (validx == -1) throw new ArgumentException("找不到 WHERE ");
sb.Clear().Append(sql.Substring(0, validx))
sql = sb.Clear().Append(sql.Substring(0, validx))
.Append(sbret)
.Append(sql.Substring(validx));
.Append(sql.Substring(validx)).ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Delete, sql, dbParms);
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);

View File

@ -46,11 +46,11 @@ namespace FreeSql.SqlServer.Curd
}
}
var sql = sb.ToString();
var validx = sql.IndexOf(" WHERE ");
var validx = sql.IndexOf(" \r\nWHERE ");
if (validx == -1) throw new ArgumentException("找不到 WHERE ");
sb.Clear().Append(sql.Substring(0, validx))
sql = sb.Clear().Append(sql.Substring(0, validx))
.Append(sbret)
.Append(sql.Substring(validx));
.Append(sql.Substring(validx)).ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);
@ -139,11 +139,11 @@ namespace FreeSql.SqlServer.Curd
}
}
var sql = sb.ToString();
var validx = sql.IndexOf(" WHERE ");
var validx = sql.IndexOf(" \r\nWHERE ");
if (validx == -1) throw new ArgumentException("找不到 WHERE ");
sb.Clear().Append(sql.Substring(0, validx))
sql = sb.Clear().Append(sql.Substring(0, validx))
.Append(sbret)
.Append(sql.Substring(validx));
.Append(sql.Substring(validx)).ToString();
var before = new Aop.CurdBeforeEventArgs(_table.Type, _table, Aop.CurdType.Update, sql, dbParms);
_orm.Aop.CurdBeforeHandler?.Invoke(this, before);

View File

@ -43,7 +43,7 @@ namespace FreeSql.Sqlite
var ret = new SQLiteParameter();
#endif
ret.ParameterName = QuoteParamterName(parameterName);
ret.DbType = dbtype ?? default;
if (dbtype != null) ret.DbType = dbtype.Value;
ret.Value = value;
_params?.Add(ret);
return ret;