Azure C# Cosmos DB: при вставке данных отсутствует обязательный идентификатор свойства. - PullRequest
0 голосов
/ 06 августа 2020

Я создаю программу, которая записывает данные в Cosmos DB (OneAuthZDeltaRoleDatabase), однако, когда я записываю данные, я получаю следующую ошибку:

"The input content is invalid because the required properties - 'id; ' - are missing"

Ниже мой код, в котором я программно создайте Cosmos DB (OneAuthZDeltaRoleDatabase) и ее контейнер (OneAuthZDeltaRoleContainer) и попытайтесь вставить данные в Cosmos DB (база данных и контейнер успешно созданы, но вставка данных не удалась):

    // Creates the Cosmos DB database where we store the last delta API call for each app
    private static async Task CreateDeltaAPICallDatabaseAsync()
    {
        // Create a new database
        lastAPICallDatabase = await cosmosClient.CreateDatabaseIfNotExistsAsync(lastDeltaDatabaseId);
    }

    // Creates the Cosmos DB container where we store the last delta API for each app
    private static async Task CreateDeltaAPICallContainerAsync()
    {
        // Create a new container
        lastAPICallContainer = await lastAPICallDatabase.CreateContainerIfNotExistsAsync(lastDeltaContainerId, "/AppId");
    }


    /* Timer function that reads the role assignments table (OneAuthZRoleAssignments) on a configurable schedule
     * and computes + displays a mapping of users to their corresponding role assignments (e.x. every 2 mins) */
    [FunctionName("InitiateChangeMonitoring")]
    public static async Task InitiateChangeMonitoring([TimerTrigger("%TimerTriggerPeriod%")] TimerInfo myTimer, ILogger log)
    {
        // Create the necessary Cosmos DB infastructure
        await CreateDeltaAPICallDatabaseAsync();
        await CreateDeltaAPICallContainerAsync();

            foreach (string appId in oneAuthZAppIds)
            {
                // Initialize the base delta API call timestamp for that app id (if it does not exist)
                await lastAPICallContainer.CreateItemAsync(new DeltaAPIMapping(appId, baselineSnapshotTime), new PartitionKey(appId));
            }
     }

введите описание изображения здесь

Это код для класса DeltaAPIMapping (класса, который я добавляю в Cosmos DB).

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Text;

namespace AccessChangeMonitoring
{
    class DeltaAPIMapping
    {
        [JsonProperty(PropertyName = "AppId")]
        public string id { get; set; }

        public DeltaAPIMapping(string appId, DateTime callTimestamp)
        {
            this.id = Guid.NewGuid().ToString();
            this.appId = appId;
            this.callTimestamp = callTimestamp;
        }

        public string appId { get; set; }
        public DateTime callTimestamp { get; set; }
    }
}

1 Ответ

0 голосов
/ 06 августа 2020

Вам нужно, чтобы имя JsonProperty было «id», а не «AppId». Если AppId - это то, что нужно вашему приложению, попробуйте перевернуть их и повторить попытку.

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