You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中调用DynamoDB的GetItem()方法报错,求解决方案

问题分析与解决方案

错误原因

从错误提示No overload for method 'GetItem' takes 0 arguments可知,你调用table.GetItem()时没有传入主键参数。DynamoDB是键值型数据库,获取单条Item必须指定主键,这是报错的直接原因。

修正后的代码

要获取指定主键的Item并调用ToJson()方法,代码需补充主键参数,同时明确类型以避免dynamic带来的潜在问题:

public static string Dynamodb() 
{
    string region = "us-east-2";
    string tableName = "RetailTestData";
    var credentials = new BasicAWSCredentials(
        Environment.GetEnvironmentVariable("awsAccessKeyId"), 
        Environment.GetEnvironmentVariable("awsSecretAccessKey")
    );
    var client = new AmazonDynamoDBClient(credentials, RegionEndpoint.GetBySystemName(region));
    var table = Table.LoadTable(client, tableName);
    
    // 替换为你的表的主键名称与对应值
    // 若为复合主键,需同时传入分区键和排序键,示例:{ { "PartitionKey", "val1" }, { "SortKey", "val2" } }
    var primaryKey = new Dictionary<string, object> { { "主键字段名", "主键值" } };
    Document item = table.GetItem(primaryKey);
    
    // 调用ToJson()转换为JSON字符串,空值判断避免主键不存在时抛异常
    return item?.ToJson();
}

关键说明

  • Table.GetItem()的正确重载需要接收主键键值对,单主键传单个键值,复合主键传两个键值
  • Document类型原生支持ToJson()方法,能直接将DynamoDB Item转换为标准JSON,适配你现有代码的JSON处理逻辑
  • 添加item?.ToJson()的空值判断,可避免因主键不存在导致的空引用异常

内容的提问来源于stack exchange,提问作者smiles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 22:33:28