A new feature added to allow developers to programmatically set CASE WHEN when assigning values. Feature includes grouping in sub statements () or
to allow condition to point to a column variable instead of a direct paramater value. SQL injection friendly
var datac = data.Chunk(200); // breaking data up to 200 rows
//each holds for each update set, which allows multiple value setting as older Update
List<object[]> cases = [];
if (datac.Any()) foreach (var d in datac)
{
try
{
foreach (var item in d) //Build case when statement , standard 3
{
cases.Add(["Id", item.Id, item.Value]);
}
object obj = new
{
MyField= cases.ToArray()
};
cases.Clear();
//if data set is smaller than whole table , best to use in statement to reduce cost
cnt += await QueryFactory.Query(tableName)
.WhereIn("Id", d.Select(dd => dd.Id).ToArray())
.UpdateAsync(value);
}
catch { throw; }
finally { cases.Clear(); }
}
else cases.Clear();
return cnt;
##standard: Case WHEN x = A then Y... END: