AWS dotnet SDK:使用对象持久性模型

时间:2019-07-10 14:58:01

标签: amazon-web-services amazon-dynamodb aws-sdk aws-sdk-net

我们有一个现有的无服务器应用程序,我们希望将lambda从nodejs迁移到dotnet核心。

似乎nodejs SDK将null值保存为Null动态集条目。以下json数据:

{
  "key": "xxx",
  "field": null
}

坚持为:

{
  "key": {
    "S": "xxxx"
  },
  "field": {
    "NULL": true
  }
}

因此,我创建了一个dotnet类以能够使用Object Persistence Model

[DynamoDBTable("tableName")]
public class MyData
{
    [DynamoDBHashKey("key")]
    public string Key { get; set; }

    [DynamoDBProperty("field")]
    public string Field { get; set; }
}

从dynamodb反序列化数据是通过以下命令执行的:

public async Task<MyData> GetDataByKey(string key)
{
    IAmazonDynamoDB dynamoDbClient = new AmazonDynamoDBClient();
    var config = new DynamoDBContextConfig { Conversion = DynamoDBEntryConversion.V2 };
    var dbContext = new DynamoDBContext(dynamoDbClient, config);
    return await dbContext.LoadAsync<MyData>(key);
}

但是只要字段Null中有一个field值,该操作就会失败,但以下情况除外:

  

System.InvalidOperationException:无法将类型为Amazon.DynamoDBv2.DocumentModel.DynamoDBNull的[Amazon.DynamoDBv2.DocumentModel.DynamoDBNull]转换为System.String

如何在dotnet中处理此问题而无需在数据库中运行预迁移脚本来修复所有数据(例如,删除将要映射到不兼容类型的所有空值)?

0 个答案:

没有答案