private async Task SaveManyCoreMany(IDbFactory dbFactory, IEnumerable <StateEntity> entities) { var array = StateEntity.DistinctWithVersion(entities).ToArray(); var items = array .Select(x => new RelationalStateEntity { claptrap_id = x.ClaptrapId, claptrap_type_code = x.ClaptrapTypeCode, version = x.Version, state_data = x.StateData, updated_time = x.UpdatedTime }) .AsParallel() .ToArray(); var sql = GetUpsertSql(_schemaName, _tableName, items.Length); using var db = dbFactory.GetConnection(_connectionName); var ps = new DynamicParameters(); for (var i = 0; i < array.Length; i++) { foreach (var(parameterName, valueFunc) in RelationalStateEntity.ValueFactories()) { var entity = items[i]; var name = _sqlTemplateCache.GetParameterName(parameterName, i); ps.Add(name, valueFunc(entity)); } } await db.ExecuteAsync(sql, ps); }
private async Task SaveManyCoreMany( IDbFactory dbFactory, IEnumerable <EventEntity> entities) { var array = entities as EventEntity[] ?? entities.ToArray(); var items = array .Select(x => new RelationalEventEntity { claptrap_id = x.ClaptrapId, claptrap_type_code = x.ClaptrapTypeCode, created_time = x.CreatedTime, event_data = x.EventData, event_type_code = x.EventTypeCode, version = x.Version }) .ToArray(); var sql = InitRelationalInsertManySql( _schemaName, _eventTableName, array.Length); using var db = dbFactory.GetConnection(_connectionName); var ps = new DynamicParameters(); for (var i = 0; i < array.Length; i++) { foreach (var(parameterName, valueFunc) in RelationalEventEntity.ValueFactories()) { var eventEntity = items[i]; var name = _sqlTemplateCache.GetParameterName(parameterName, i); ps.Add(name, valueFunc(eventEntity)); } } await db.ExecuteAsync(sql, ps); }