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

Unity C#环境下DynamoDB动态设置表名与CS0103报错解决问询

问题原因

你存在两个核心错误:

  • C# 特性(Attribute)的参数必须是编译期常量,不能传入运行时才确定的变量,也不支持传入DynamoDBOperationConfig类型的对象,[DynamoDBTable]特性本身只接受字符串类型的固定表名参数,你的写法本身不符合C#语法规则。
  • S_tablefieldset是类的实例字段,类特性加载时类还未实例化,自然找不到该变量,这就是你收到CS0103报错的直接原因。
正确实现方案

DynamoDBOperationConfig.OverrideTableName的设计初衷就是在运行时覆盖类特性上标注的固定表名,完全不需要修改类上的[DynamoDBTable]特性,按以下步骤操作即可:

  1. 保留类上的[DynamoDBTable]特性,填任意默认表名即可
// 此处填写任意默认表名,运行时会被覆盖
[DynamoDBTable("mydynamodbtablename")]
public class HighLevelTableExample : DynamoDbBaseExample
{
    public string S_tablefieldset;
    // 其余类代码保持不变
}
  1. 你的GetDynamoDbOperationConfig静态方法无需修改,在实际执行DynamoDB读写操作时,将生成的配置作为参数传入对应的操作方法即可:
// 运行时给动态表名赋值
S_tablefieldset = "your_runtime_dynamic_table_name";
// 生成自定义操作配置
var config = GetDynamoDbOperationConfig(S_tablefieldset);
// 初始化DynamoDB上下文(yourAmazonDynamoDBClient为你初始化好的DynamoDB客户端实例)
var dbContext = new DynamoDBContext(yourAmazonDynamoDBClient);

// 示例1:查询操作,传入config即可自动覆盖表名
var queryResult = await dbContext.LoadAsync<HighLevelTableExample>(yourHashKey, config);
// 示例2:写入操作
await dbContext.SaveAsync(yourDataObject, config);
// 其余Delete、Scan、Query等操作均支持传入该配置参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:15:07