Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }