Пакетные операции с мобильным AWS SDK (Unity) и DynamoDB

#c# #.net #amazon-web-services #unity3d #amazon-dynamodb

#c# #.net #amazon-веб-сервисы #unity3d #amazon-dynamodb

Вопрос:

Я использую мобильный AWS SDK с Unity для хранения данных в DynamoDB. Это работает хорошо, но одновременно записывается только один документ (у меня есть буквально тысячи документов для хранения), что затрудняет работу моего приложения. Проблема в том, что я не нашел документации о пакетной обработке. Кто-нибудь знает, как реализовать пакетную запись?

Это код, который я использую для записи 1 элемента за раз:

 foreach (var dataDocument in listOfDocuments)
{
    MyTable.PutItemAsync(dataDocument, (r) => { });
}
  

Я пробовал это:

 private void LoadAWSTable1()
{
    DynamoDBContext context = new DynamoDBContext(client);
    DynamoDBOperationConfig config = new DynamoDBOperationConfig();
    config.SkipVersionCheck = true;
    var threadBatch = context.CreateBatchWrite<Thread>(config);
    threadBatch.ExecuteAsync();
    listOfDocuments.Clear();
}
  

Но ExecuteAsync() выдает эту ошибку:

Ошибка CS7036 Не указан аргумент, соответствующий требуемому формальному параметру ‘обратный вызов’ для ‘BatchWrite.ExecuteAsync(AmazonDynamoDBCallback, AsyncOptions)’

Спасибо

Комментарии:

1. Если вы планируете загружать большие объемы данных в DynamoDB, вы можете использовать конвейер данных для импорта данных из CSV-файла в таблицу. Тем не менее, вы должны быть очень осторожны с тем, как данные подавляются в файле CSV, поскольку конвейер данных очень специфичен в отношении формата, который он считывает.

Ответ №1:

Ну, как указано в ошибке BatchWrite.ExecuteAsync , ожидается параметр типа Amazon.DynamoDBv2.AmazonDynamoDBCallback

Вы не передаете его…

 threadBatch.ExecuteAsync(theCallbackDelegate, someAsyncOptions);
  

К сожалению, я не смог найти этот тип в документации, поэтому я не могу сказать вам подпись прямо сейчас

Из комментариев ниже я могу только догадываться, что, по крайней мере, someAsyncOptions было бы необязательно.

На самом деле единственное, что я нашел, было BatchWrite.ExecuteAsync но не из вашей ошибки … может быть другой версией.

Комментарии:

1. Спасибо за ваш ответ. Извините, я очень новичок в этом. Я все еще получаю ту же ошибку, я должен ввести аргументы в функцию ExecuteAsync(). Не могли бы вы быть более точными, пожалуйста?

2. @NomansSkywalker о, извините: D совершенно забыл передать его

3. К сожалению, это тоже не сработало. Я получил эту ошибку: «CS1503 Аргумент 1: не удается преобразовать из ‘System. Многопоточность. Отмена перехода «на «Amazon. DynamoDBv2.AmazonDynamoDBCallback'». Идея?

4. о, хорошо, очевидно, у вас есть какая-то другая версия, для которой я не нашел никакой документации. Но, в конце концов, это означает: вам нужно передать метод делегирования обратного вызова, который, вероятно, будет вызван после завершения асинхронного выполнения. К сожалению, я не смог найти никакой документации ни для этого типа делегата