AWS dotnet SDK: сопоставить DynamoDBNull со строкой с помощью модели постоянства объектов - PullRequest
0 голосов
/ 10 июля 2019

У нас есть существующее безсерверное приложение, и мы хотим перенести лямбда-выражения из nodejs в ядро ​​dotnet.

Похоже, SDK для nodejs сохраняет 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);
}

Но если в поле field есть значение Null, операция завершается неудачно сследующее исключение:

System.InvalidOperationException: не удалось преобразовать [Amazon.DynamoDBv2.DocumentModel.DynamoDBNull] типа Amazon.DynamoDBv2.DocumentModel.DynamoDBNull в System.String

Как я могу обработать это в dotnet без запуска сценария предварительной миграции в базе данных, чтобы исправить все данные (например, удалить все нулевые значения, которые будут сопоставлены с несовместимым типом)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...