Skip to content

Commit 9e44206

Browse files
author
“llt”
committed
Updated BatchUpdateString
1 parent c410ed2 commit 9e44206

2 files changed

Lines changed: 48 additions & 30 deletions

File tree

frameworks/CSharp/appmpower/src/appMpower.Orm/Data/DbCommand.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Data;
2+
using System.Data.Common;
23
using System.Threading.Tasks;
34

45
namespace appMpower.Orm.Data
@@ -130,31 +131,31 @@ public IDbDataParameter CreateParameter()
130131
return _dbCommand.CreateParameter();
131132
}
132133

133-
public IDbDataParameter CreateParameter(string name, object value)
134+
public DbParameter CreateParameter(string name, object value)
134135
{
135136
return CreateParameter(name, DbType.String, value);
136137
}
137138

138-
public IDbDataParameter CreateParameter(string name, DbType dbType, object value)
139+
public DbParameter CreateParameter(string name, DbType dbType, object value)
139140
{
140-
IDbDataParameter dbDataParameter;
141+
DbParameter dbParameter;
141142

142143
if (_dbCommand.Parameters.Contains(name))
143144
{
144-
dbDataParameter = _dbCommand.Parameters[name];
145-
dbDataParameter.Value = value;
145+
dbParameter = _dbCommand.Parameters[name];
146+
dbParameter.Value = value;
146147
}
147148
else
148149
{
149-
dbDataParameter = _dbCommand.CreateParameter();
150+
dbParameter = _dbCommand.CreateParameter();
150151

151-
dbDataParameter.ParameterName = name;
152-
dbDataParameter.DbType = dbType;
153-
dbDataParameter.Value = value;
154-
_dbCommand.Parameters.Add(dbDataParameter);
152+
dbParameter.ParameterName = name;
153+
dbParameter.DbType = dbType;
154+
dbParameter.Value = value;
155+
_dbCommand.Parameters.Add(dbParameter);
155156
}
156157

157-
return dbDataParameter;
158+
return dbParameter;
158159
}
159160

160161
public int ExecuteNonQuery()

frameworks/CSharp/appmpower/src/appMpower.Orm/Microsoft/BatchUpdateString.cs

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

44
using System.Linq;
5-
using appMpower.Orm;
6-
using appMpower.Orm.Data;
75

86
namespace PlatformBenchmarks
97
{
@@ -35,32 +33,51 @@ public static string Query(int batchSize)
3533
//sb.Append("(?::int,?::int)) AS temp(id, randomNumber) WHERE temp.id = world.id");
3634
*/
3735

38-
if (Constants.Dbms == Dbms.MySQL)
36+
#if MYSQL
37+
for (int i = 0; i < batchSize; i++)
3938
{
40-
for (int i = 0; i < batchSize; i++)
41-
{
42-
sb.Append("UPDATE world SET randomNumber=? WHERE id=?;");
43-
}
39+
sb.Append("UPDATE world SET randomNumber=? WHERE id=?;");
4440
}
45-
else
41+
#elif ADO
42+
/*
43+
sb.Append("UPDATE world SET randomNumber = temp.randomNumber FROM (VALUES ");
44+
Enumerable.Range(0, lastIndex).ToList().ForEach(i => sb.Append($"(@i{i}, @r{i}), "));
45+
sb.Append($"(@i{lastIndex}, @r{lastIndex}) ORDER BY 1) AS temp(id, randomNumber) WHERE temp.id = world.id");
46+
*/
47+
48+
sb.Append("UPDATE world SET randomNumber=CASE id ");
49+
50+
for (int i = 0; i < batchSize; i++)
51+
{
52+
sb.Append("WHEN @i" + i + " THEN @r" + i + " ");
53+
}
54+
55+
sb.Append("ELSE randomnumber END WHERE id IN(");
56+
57+
for (int i = 0; i < lastIndex; i++)
4658
{
47-
sb.Append("UPDATE world SET randomNumber=CASE id ");
59+
sb.Append("@j" + i + ",");
60+
}
4861

49-
for (int i = 0; i < batchSize; i++)
50-
{
51-
sb.Append("WHEN ? THEN ? ");
52-
}
62+
sb.Append("@j" + lastIndex + ")");
63+
#else
64+
sb.Append("UPDATE world SET randomNumber=CASE id ");
5365

54-
sb.Append("ELSE randomnumber END WHERE id IN(");
66+
for (int i = 0; i < batchSize; i++)
67+
{
68+
sb.Append("WHEN ? THEN ? ");
69+
}
5570

56-
for (int i = 0; i < lastIndex; i++)
57-
{
58-
sb.Append("?,");
59-
}
71+
sb.Append("ELSE randomnumber END WHERE id IN(");
6072

61-
sb.Append("?)");
73+
for (int i = 0; i < lastIndex; i++)
74+
{
75+
sb.Append("?,");
6276
}
6377

78+
sb.Append("?)");
79+
#endif
80+
6481
return _queries[batchSize] = StringBuilderCache.GetStringAndRelease(sb);
6582
}
6683
}

0 commit comments

Comments
 (0)