c# - DynamoDB Scan 未正确映射到 DynamoDBProperty?
问题描述
我遇到了一个问题,即 DynamoDB 扫描似乎没有将结果正确映射回数据类。这是一些代码:
[DynamoDBTable(TABLE_NAME)]
public class Settings
{
public const string TABLE_NAME = "Settings";
public const string PROPERTY_VALUE_INT = "I";
[DynamoDBHashKey]
public string K { get; set; }
[DynamoDBProperty(PROPERTY_VALUE_INT)]
public int ValueInt { get; set; }
}
我能够构造设置对象并使用 PutItem 成功地添加到带有字段“K”和“I”的数据库条目。但是,当我尝试扫描结果时,“I”字段的值不会映射到“设置”对象的“ValueInt”字段(因此 ValueInt 字段始终默认为 0)。如果我将“I”变量添加到 Settings 对象,则 Scan 将正确映射到该字段。为什么 Scan 无法识别 DynamoDBProperty 属性?
这是扫描代码:
AmazonDynamoDBConfig config = new AmazonDynamoDBConfig()
{
ServiceURL = "http://dynamodb.us-east-2.amazonaws.com"
};
Client = new AmazonDynamoDBClient(config);
Context = new DynamoDBContext(Client);
List<Settings> settings = Context.Scan<Settings>().ToList();
解决方案
弄清楚了。问题是我使用的是旧的 AWSSDK 包而不是较新的 AWSSDK.Core 和 AWSSDK.DynamoDBv2 包
推荐阅读
- python-3.x - 'config' 未定义 Pocketsphinx Python
- javascript - 如何使用 fetch api 方法从 php 文件中访问数据?
- ruby-on-rails - 反应组件不在 Heroku 上渲染
- html - 如何将设计模板添加到电子邮件中?
- ruby-on-rails - Heroku Deploy: URI::InvalidURIError: bad URI(is not URI?): ://user:pass@127.0.0.1/dbname
- mysql - 在mysql中将多行合并为一
- javascript - 不等于运算符不使用 Mongoose 中的 _id
- javascript - 无法映射子项的子项
- java - 错误:不兼容的类型:android.content.Context 无法转换为 com.google.firebase.database.core.Context
- postgresql - Postgresql:在外部表上触发以执行截断/插入本地表的功能