Модель документа AWS dynamicodb не может преобразовать JArray в Datetime - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть таблица моделей, которая мне нужна для получения данных из AWS Dynamo Db.

[DynamoDBTable("Table1")]
    public class BuilderData
    {
        [DynamoDBHashKey("Id")]
        public string Id { get; set; }

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

        [DynamoDBRangeKey]
        public DateTime createdTimeStamp { get; set; }          
    }

Я написал общий метод, который будет принимать объекты значений и ключи, которые будут извлекаться из этого, используямодель общего запроса.

Здесь тип T: BuilderData

public async Task<List<T>> Filter<T>(string tableName, SearchPost searchPost) where T : class
        {
            List<T> results = new List<T>();
            DynamoDBContext context = new DynamoDBContext(client);
            List<ScanCondition> scans = new List<ScanCondition>();
            foreach (var scan in searchPost.ScanPosts)
            {
                scans.Add(new ScanCondition(scan.Key, (ScanOperator)scan.Operator, scan.Value));
            }
            Table dbCatalog = Table.LoadTable(client, tableName);
            Trace.WriteLine($"RECORDS MATCHED : {results.Count}", "INFO");

            AsyncSearch<T> result = context.ScanAsync<T>(scans);
            do
            {
                List<T> docs = await result.GetNextSetAsync();
                results.AddRange(docs);
            } while (!result.IsDone);

            return results;
        }

Я пытаюсь отправить запрос, похожий на этот, для объекта searchPost.ScanPosts -

{
    "scanPosts": [
        {
            "key": "createdTimeStamp",
            "operator": 12,
            "value":[ "2018-11-27 00:00:00.000000","2018-11-27 00:00:00.000000"]
        }

    ]
}

Когда я выполняю в строке - AsyncSearch<T> result = context.ScanAsync<T>(scans); Выдает ошибку как -

Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
      An unhandled exception has occurred while executing the request.
System.InvalidCastException: Unable to cast object of type 'Newtonsoft.Json.Linq.JArray' to type 'System.String'.
   at Amazon.DynamoDBv2.Converter`1.TryTo(Object value, Primitive& p) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Services\DynamoDBv2\Custom\Conversion\DynamoDBEntryConversion.cs:line 630

Я не уверен, как решить эту проблему, так как тип возвращаемого значения не является массивом для datetimeбыть отдельными документами.Не уверен, почему это вызывает проблему.

...