我从AWS SDK模板开始我的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);