Skip to content

Commit 09feaea

Browse files
Merge pull request #355 from sqlkata/fix/unsafe-literal-fail-on-update
Fix unsafe raw literal on update
2 parents b27115b + fe43f22 commit 09feaea

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

QueryBuilder.Tests/UpdateTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,5 +194,24 @@ public void UpdateFromQueryShouldFail()
194194

195195
}
196196

197+
[Fact]
198+
public void update_should_compile_literal_without_parameters_holders()
199+
{
200+
201+
var query = new Query("MyTable").AsUpdate(new
202+
{
203+
Name = "The User",
204+
Address = new UnsafeLiteral("@address")
205+
});
206+
207+
var compiler = new SqlServerCompiler();
208+
var result = compiler.Compile(query);
209+
210+
Assert.Equal(
211+
"UPDATE [MyTable] SET [Name] = ?, [Address] = @address",
212+
result.RawSql
213+
);
214+
}
215+
197216
}
198217
}

QueryBuilder/Compilers/Compiler.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -291,11 +291,9 @@ private SqlResult CompileUpdateQuery(Query query)
291291

292292
for (var i = 0; i < toUpdate.Columns.Count; i++)
293293
{
294-
parts.Add($"{Wrap(toUpdate.Columns[i])} = ?");
294+
parts.Add(Wrap(toUpdate.Columns[i]) + " = " + Parameter(ctx, toUpdate.Values[i]));
295295
}
296296

297-
ctx.Bindings.AddRange(toUpdate.Values);
298-
299297
var where = CompileWheres(ctx);
300298

301299
if (!string.IsNullOrEmpty(where))

0 commit comments

Comments
 (0)