我从 AWS 开发工具包模板开始了我的 Visual Studio 项目。它在函数中使用 IDynamoDBContext,在测试中使用 IAmazonDynamoDB。当我收到带有 id(哈希)的文档时,一切都可以保存和接收文档。但是当我在我的表中添加一个范围时它就停止工作了。我所有的测试都是针对 AWS dynamoDb。但我让它以两种方式工作。第一种方法是当我下载 dynamoDb 的本地实例时。第二个是当我在我的函数中将 IDynamoDBContext 替换为 IAmazonDynamoDB 时(因此它在函数和我的测试类中使用了相同的接口)。我不知道正确的解决方案是什么,但为什么首先使用 2 个接口?我应该继续挖掘为什么它不能与不同的接口一起工作,还是应该只使用其中一个?
// IDynamoDBContext (default) - Didn't save my item (did save it in local DynamoDB)
var test = new Test
{
UserId = "Test",
Id = 1
};
await DDBContext.SaveAsync<Test>(test);
// IAmazonDynamoDB - Did save my item
var putItemRequest = new PutItemRequest
{
TableName = "TestTable",
Item = new Dictionary<string, AttributeValue>()
{
{ "UserId", new AttributeValue { S = "Test" }},
{ "Id", new AttributeValue { N = "1" }}
}
};
await DDBContext.PutItemAsync(putItemRequest);
我的测试:
var item = new GetItemRequest
{
TableName = "TestTable",
Key = new Dictionary<string, AttributeValue>
{
{ "UserId", new AttributeValue { S = "Test" } },
{ "Id", new AttributeValue { N = "1" } },
},
};
Assert.True((await this.DDBClient.GetItemAsync(item)).Item.Count > 0);