Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit cf53e01

Browse files
committed
Specify fieldDef Type when adding params
1 parent 08d84db commit cf53e01

File tree

7 files changed

+18
-16
lines changed

7 files changed

+18
-16
lines changed

src/ServiceStack.OrmLite.Firebird/FirebirdOrmLiteDialectProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ public override void PrepareUpdateRowStatement(IDbCommand dbCmd, object objWithP
261261
sqlFilter
262262
.Append(GetQuotedColumnName(fieldDef.FieldName))
263263
.Append("=")
264-
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties)).ParameterName);
264+
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef.ColumnType).ParameterName);
265265

266266
continue;
267267
}
@@ -275,7 +275,7 @@ public override void PrepareUpdateRowStatement(IDbCommand dbCmd, object objWithP
275275
sql
276276
.Append(GetQuotedColumnName(fieldDef.FieldName))
277277
.Append("=")
278-
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties)).ParameterName);
278+
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef.ColumnType).ParameterName);
279279
}
280280

281281
dbCmd.CommandText = string.Format("UPDATE {0} \nSET {1} {2}",

src/ServiceStack.OrmLite.Oracle/OracleOrmLiteDialectProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -730,7 +730,7 @@ public override void PrepareUpdateRowStatement(IDbCommand dbCmd, object objWithP
730730
sqlFilter
731731
.Append(GetQuotedColumnName(fieldDef.FieldName))
732732
.Append("=")
733-
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties)).ParameterName);
733+
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef.ColumnType).ParameterName);
734734

735735
continue;
736736
}

src/ServiceStack.OrmLite.SqlServer/SqlServerExpression.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ internal static void PrepareSqlServerUpdateStatement<T>(IDbCommand dbCmd, SqlExp
104104
if (setFields.Length > 0)
105105
setFields.Append(", ");
106106

107-
var param = DialectProvider.AddParam(dbCmd, value);
107+
var param = DialectProvider.AddParam(dbCmd, value, fieldDef.ColumnType);
108108
setFields
109109
.Append(DialectProvider.GetQuotedColumnName(fieldDef.FieldName))
110110
.Append("=")

src/ServiceStack.OrmLite.VistaDB/VistaDBExpression.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public override void PrepareUpdateStatement(IDbCommand dbCmd, T item, bool exclu
3030
if (setFields.Length > 0)
3131
setFields.Append(", ");
3232

33-
var param = DialectProvider.AddParam(dbCmd, value);
33+
var param = DialectProvider.AddParam(dbCmd, value, fieldDef.ColumnType);
3434
setFields
3535
.Append(DialectProvider.GetQuotedColumnName(fieldDef.FieldName))
3636
.Append("=")

src/ServiceStack.OrmLite/Expressions/SqlExpression.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -808,7 +808,7 @@ public virtual void PrepareUpdateStatement(IDbCommand dbCmd, T item, bool exclud
808808
setFields
809809
.Append(DialectProvider.GetQuotedColumnName(fieldDef.FieldName))
810810
.Append("=")
811-
.Append(DialectProvider.AddParam(dbCmd, value).ParameterName);
811+
.Append(DialectProvider.AddParam(dbCmd, value, fieldDef.ColumnType).ParameterName);
812812
}
813813

814814
if (setFields.Length == 0)
@@ -1797,17 +1797,19 @@ public static class DbDataParameterExtensions
17971797
public static IDbDataParameter CreateParam(this IDbConnection db,
17981798
string name,
17991799
object value=null,
1800+
Type fieldType = null,
18001801
DbType? dbType=null,
18011802
byte? precision=null,
18021803
byte? scale=null,
18031804
int? size=null)
18041805
{
1805-
return db.GetDialectProvider().CreateParam(name, value, dbType, precision, scale, size);
1806+
return db.GetDialectProvider().CreateParam(name, value, fieldType, dbType, precision, scale, size);
18061807
}
18071808

18081809
public static IDbDataParameter CreateParam(this IOrmLiteDialectProvider dialectProvider,
18091810
string name,
18101811
object value = null,
1812+
Type fieldType = null,
18111813
DbType? dbType = null,
18121814
byte? precision = null,
18131815
byte? scale = null,
@@ -1817,18 +1819,18 @@ public static IDbDataParameter CreateParam(this IOrmLiteDialectProvider dialectP
18171819

18181820
to.ParameterName = dialectProvider.GetParam(name);
18191821

1822+
var valueType = fieldType ?? (value != null ? value.GetType() : typeof(string));
1823+
18201824
if (value != null)
18211825
{
1822-
to.Value = dialectProvider.GetParamValue(value, value.GetType());
1823-
dialectProvider.InitDbParam(to, value.GetType());
1826+
to.Value = dialectProvider.GetParamValue(value, valueType);
1827+
dialectProvider.InitDbParam(to, valueType);
18241828
}
18251829
else
18261830
{
18271831
to.Value = DBNull.Value;
18281832
}
18291833

1830-
var valueType = value != null ? value.GetType() : typeof(string);
1831-
18321834
if (precision != null)
18331835
to.Precision = precision.Value;
18341836
if (scale != null)
@@ -1844,11 +1846,11 @@ public static IDbDataParameter CreateParam(this IOrmLiteDialectProvider dialectP
18441846
return to;
18451847
}
18461848

1847-
public static IDbDataParameter AddParam(this IOrmLiteDialectProvider dialectProvider, IDbCommand dbCmd, object value)
1849+
public static IDbDataParameter AddParam(this IOrmLiteDialectProvider dialectProvider, IDbCommand dbCmd, object value, Type fieldType = null)
18481850
{
18491851
var paramName = dbCmd.Parameters.Count.ToString();
18501852

1851-
var parameter = dialectProvider.CreateParam(paramName, value);
1853+
var parameter = dialectProvider.CreateParam(paramName, value, fieldType);
18521854
dbCmd.Parameters.Add(parameter);
18531855
return parameter;
18541856
}

src/ServiceStack.OrmLite/Expressions/WriteExpressionCommandExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ internal static void PrepareUpdateAnonSql<T>(this IDbCommand dbCmd, IOrmLiteDial
100100
sql
101101
.Append(dialectProvider.GetQuotedColumnName(fieldDef.FieldName))
102102
.Append("=")
103-
.Append(dialectProvider.AddParam(dbCmd, value).ParameterName);
103+
.Append(dialectProvider.AddParam(dbCmd, value, fieldDef.ColumnType).ParameterName);
104104
}
105105

106106
dbCmd.CommandText = string.Format("UPDATE {0} SET {1} {2}",

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -911,7 +911,7 @@ public virtual void PrepareUpdateRowStatement(IDbCommand dbCmd, object objWithPr
911911
sqlFilter
912912
.Append(GetQuotedColumnName(fieldDef.FieldName))
913913
.Append("=")
914-
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties)).ParameterName);
914+
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef.ColumnType).ParameterName);
915915

916916
continue;
917917
}
@@ -925,7 +925,7 @@ public virtual void PrepareUpdateRowStatement(IDbCommand dbCmd, object objWithPr
925925
sql
926926
.Append(GetQuotedColumnName(fieldDef.FieldName))
927927
.Append("=")
928-
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties)).ParameterName);
928+
.Append(this.AddParam(dbCmd, fieldDef.GetValue(objWithProperties), fieldDef.ColumnType).ParameterName);
929929
}
930930
catch (Exception ex)
931931
{

0 commit comments

Comments
 (0)