#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. о, хорошо, очевидно, у вас есть какая-то другая версия, для которой я не нашел никакой документации. Но, в конце концов, это означает: вам нужно передать метод делегирования обратного вызова, который, вероятно, будет вызван после завершения асинхронного выполнения. К сожалению, я не смог найти никакой документации ни для этого типа делегата