internal static async Task <TEntity[]> UpdateEntities <TEntity>(this IBulkRequest request, ICrudRequestConfig config, IEnumerable <Tuple <object, TEntity> > items, CancellationToken token) where TEntity : class { var updator = config.GetUpdatorFor <TEntity>(); try { var entities = await Task.WhenAll(items.Select(x => updator(request, x.Item1, x.Item2, token))).Configure(); token.ThrowIfCancellationRequested(); return(entities); } catch (Exception e) when(IsNonCancellationFailure(e)) { throw new CrudUpdateEntityFailedException(GenericUpdateEntityError, e) { ItemProperty = items.Select(x => x.Item1).ToArray(), EntityProperty = items.Select(x => x.Item2).ToArray() }; } }
internal static async Task <TEntity> UpdateEntity <TEntity>(this ICrudRequest request, ICrudRequestConfig config, object item, TEntity entity, CancellationToken token) where TEntity : class { var updator = config.GetUpdatorFor <TEntity>(); try { entity = await updator(request, item, entity, token).Configure(); token.ThrowIfCancellationRequested(); return(entity); } catch (Exception e) when(IsNonCancellationFailure(e)) { throw new CrudUpdateEntityFailedException(GenericUpdateEntityError, e) { ItemProperty = item, EntityProperty = entity }; } }