private string GetUpsertSql(string schemaName, string tableName, int count) { var sql = _upsertSqlCache.GetOrAdd(count, CreateUpsertSql); return(sql); string CreateUpsertSql(int valueCount) { string upsertManySqlHeader = $"REPLACE INTO {schemaName}.{tableName} (claptrap_type_code,claptrap_id,version,state_data,updated_time) VALUES "; var sb = new StringBuilder(upsertManySqlHeader); var valuesSql = Enumerable.Range(0, count) .Select(x => ValuePartFactory(RelationalStateEntity.ParameterNames(), x)) .ToArray(); sb.Append(string.Join(",", valuesSql)); return(sb.ToString()); string ValuePartFactory(IEnumerable <string> parameters, int index) { var values = string.Join(",", parameters.Select(x => _sqlTemplateCache.GetParameterName(x, index))); var re = $" ({values}) "; return(re); } } }
public static void RegisterParameters(ISqlTemplateCache sqlTemplateCache, int maxCount) { foreach (var name in RelationalStateEntity.ParameterNames()) { for (var i = 0; i < maxCount; i++) { sqlTemplateCache.AddParameterName(name, i); } } }