mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 04:18:16 +08:00
- 增加 IN 参数扩展 where id in @ids;#560
This commit is contained in:
@ -41,22 +41,27 @@ namespace FreeSql.Dameng
|
||||
public override DbParameter[] GetDbParamtersByObject(string sql, object obj) =>
|
||||
Utils.GetDbParamtersByObject<DmParameter>(sql, obj, null, (name, type, value) =>
|
||||
{
|
||||
var dbtype = (DmDbType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||
switch (dbtype)
|
||||
var typeint = _orm.CodeFirst.GetDbInfo(type)?.type;
|
||||
var dbtype = typeint != null ? (DmDbType?)typeint : null;
|
||||
if (dbtype != null)
|
||||
{
|
||||
case DmDbType.Bit:
|
||||
if (value == null) value = null;
|
||||
else value = (bool)value == true ? 1 : 0;
|
||||
dbtype = DmDbType.Int32;
|
||||
break;
|
||||
switch (dbtype)
|
||||
{
|
||||
case DmDbType.Bit:
|
||||
if (value == null) value = null;
|
||||
else value = (bool)value == true ? 1 : 0;
|
||||
dbtype = DmDbType.Int32;
|
||||
break;
|
||||
|
||||
case DmDbType.Char:
|
||||
case DmDbType.VarChar:
|
||||
case DmDbType.Text:
|
||||
value = string.Concat(value);
|
||||
break;
|
||||
case DmDbType.Char:
|
||||
case DmDbType.VarChar:
|
||||
case DmDbType.Text:
|
||||
value = string.Concat(value);
|
||||
break;
|
||||
}
|
||||
}
|
||||
var ret = new DmParameter { ParameterName = $":{name}", DmSqlType = dbtype, Value = value };
|
||||
var ret = new DmParameter { ParameterName = $":{name}", Value = value };
|
||||
if (dbtype != null) ret.DmSqlType = dbtype.Value;
|
||||
return ret;
|
||||
});
|
||||
|
||||
|
@ -54,14 +54,16 @@ namespace FreeSql.Oracle
|
||||
public override DbParameter[] GetDbParamtersByObject(string sql, object obj) =>
|
||||
Utils.GetDbParamtersByObject<OracleParameter>(sql, obj, ":", (name, type, value) =>
|
||||
{
|
||||
var dbtype = (OracleDbType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||
var dbtypeint = _orm.CodeFirst.GetDbInfo(type)?.type;
|
||||
var dbtype = dbtypeint != null ? (OracleDbType?)dbtypeint : null;
|
||||
if (dbtype == OracleDbType.Boolean)
|
||||
{
|
||||
if (value == null) value = null;
|
||||
else value = (bool)value == true ? 1 : 0;
|
||||
dbtype = OracleDbType.Int16;
|
||||
}
|
||||
var ret = new OracleParameter { ParameterName = $":{name}", OracleDbType = dbtype, Value = value };
|
||||
var ret = new OracleParameter { ParameterName = $":{name}", Value = value };
|
||||
if (dbtype != null) ret.OracleDbType = dbtype.Value;
|
||||
return ret;
|
||||
});
|
||||
|
||||
|
@ -44,23 +44,27 @@ namespace FreeSql.Sqlite
|
||||
public override DbParameter[] GetDbParamtersByObject(string sql, object obj) =>
|
||||
Utils.GetDbParamtersByObject<DbParameter>(sql, obj, "@", (name, type, value) =>
|
||||
{
|
||||
var dbtype = (DbType)_orm.CodeFirst.GetDbInfo(type)?.type;
|
||||
switch (dbtype)
|
||||
var typeint = _orm.CodeFirst.GetDbInfo(type)?.type;
|
||||
var dbtype = typeint != null ? (DbType?)typeint : null;
|
||||
if (dbtype != null)
|
||||
{
|
||||
case DbType.Guid:
|
||||
if (value == null) value = null;
|
||||
else value = ((Guid)value).ToString();
|
||||
dbtype = DbType.String;
|
||||
break;
|
||||
case DbType.Time:
|
||||
if (value == null) value = null;
|
||||
else value = ((TimeSpan)value).Ticks / 10000;
|
||||
dbtype = DbType.Int64;
|
||||
break;
|
||||
switch (dbtype.Value)
|
||||
{
|
||||
case DbType.Guid:
|
||||
if (value == null) value = null;
|
||||
else value = ((Guid)value).ToString();
|
||||
dbtype = DbType.String;
|
||||
break;
|
||||
case DbType.Time:
|
||||
if (value == null) value = null;
|
||||
else value = ((TimeSpan)value).Ticks / 10000;
|
||||
dbtype = DbType.Int64;
|
||||
break;
|
||||
}
|
||||
}
|
||||
var ret = new SQLiteParameter();
|
||||
ret.ParameterName = $"@{name}";
|
||||
ret.DbType = dbtype;
|
||||
if (dbtype != null) ret.DbType = dbtype.Value;
|
||||
ret.Value = value;
|
||||
return ret;
|
||||
});
|
||||
|
Reference in New Issue
Block a user