Skip to content

Commit feae214

Browse files
committed
- 修复 Clickhouse 参数化处理 Enum 的问题;
1 parent 3a63c3d commit feae214

1 file changed

Lines changed: 25 additions & 3 deletions

File tree

Providers/FreeSql.Provider.ClickHouse/ClickHouseUtils.cs

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ public override DbParameter AppendParamter(List<DbParameter> _params, string par
3131
var dbtype = (DbType?)_orm.CodeFirst.GetDbInfo(type)?.type;
3232
DbParameter ret = new ClickHouseDbParameter { ParameterName = parameterName };//QuoteParamterName(parameterName)
3333
if (dbtype != null) ret.DbType = dbtype.Value;
34+
if (value is Enum)
35+
{
36+
switch (ret.DbType)
37+
{
38+
case DbType.Int32:
39+
value = Utils.GetDataReaderValue(typeof(int), value); break;
40+
case DbType.Int64:
41+
value = Utils.GetDataReaderValue(typeof(long), value); break;
42+
}
43+
}
3444
ret.Value = value;
3545
if (col != null)
3646
{
@@ -57,16 +67,28 @@ public override DbParameter AppendParamter(List<DbParameter> _params, string par
5767
public override DbParameter[] GetDbParamtersByObject(string sql, object obj) =>
5868
Utils.GetDbParamtersByObject<DbParameter>(sql, obj, "@", (name, type, value) =>
5969
{
60-
if (value is string str)
70+
if (value is string str)
6171
value = str?.Replace("\t", "\\t")
6272
.Replace("\r\n", "\\r\\n")
6373
.Replace("\n", "\\n")
6474
.Replace("\r", "\\r")
6575
.Replace("/", "\\/");
6676
DbParameter ret = new ClickHouseDbParameter { ParameterName = $"@{name}", Value = value };
6777
var tp = _orm.CodeFirst.GetDbInfo(type)?.type;
68-
if (tp != null)
69-
ret.DbType = (DbType)tp.Value;
78+
if (tp != null) ret.DbType = (DbType)tp.Value;
79+
if (value is Enum)
80+
{
81+
if (tp != null)
82+
switch (ret.DbType)
83+
{
84+
case DbType.Int32:
85+
value = Utils.GetDataReaderValue(typeof(int), value); break;
86+
case DbType.Int64:
87+
value = Utils.GetDataReaderValue(typeof(long), value); break;
88+
}
89+
else
90+
value = Utils.GetDataReaderValue(typeof(int), value);
91+
}
7092
return ret;
7193
});
7294

0 commit comments

Comments
 (0)