我们有一个现有的无服务器应用程序,我们希望将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中处理此问题而无需在数据库中运行预迁移脚本来修复所有数据(例如,删除将要映射到不兼容类型的所有空值)?