Строка JSON в качестве ввода с космонавтом (CosmosDb) - PullRequest
0 голосов
/ 07 ноября 2019

.NET SDK CosmosDB допускает ввод строки JSON как показано ниже:

using (var stream = new MemoryStream())
{
    var writer = new StreamWriter(stream);
    writer.Write("{JSON_string_here}");
    writer.Flush();
    stream.Position = 0;

    ResponseMessage response = await this.container.CreateItemStreamAsync(stream, new PartitionKey("{PK_here}"));

    if (!response.IsSuccessStatusCode)
    {
        //Handle and log exception
    }
    else
    {
        //code logic here
    }
};

Разрешает ли Cosmonaut также вводить строку JSON в качестве ввода для создания элемента в контейнере?

1 Ответ

0 голосов
/ 08 ноября 2019

Используя пакет Microsoft.Azure.Cosmos, существует два способа создания элементов в контейнере:

public abstract Task<ItemResponse<T>> CreateItemAsync<T>(T item, PartitionKey? partitionKey = null, ItemRequestOptions requestOptions = null, CancellationToken cancellationToken = default(CancellationToken));

public abstract Task<ResponseMessage> CreateItemStreamAsync(Stream streamPayload, PartitionKey partitionKey, ItemRequestOptions requestOptions = null, CancellationToken cancellationToken = default(CancellationToken));

Я могу найти обходной путь для вашего запроса, вы можете воспользоваться пакетом Newtonsoft.Json.

Вот быстрый образец, который я использовал для тестирования:

    class Program
    {
        private static string EndpointUrl = "https://jackdemo.documents.azure.com:443/";
        private static string PrimaryKey = "AWgnKF********odqAkQwA==";
        private static CosmosClient cosmosClient;
        private static Database database;
        private static Container container;
        private static string databaseId = "db";
        private static string containerId = "demo";
        static void Main(string[] args)
        {
            cosmosClient = new CosmosClient(EndpointUrl, PrimaryKey);
            database = cosmosClient.CreateDatabaseIfNotExistsAsync(databaseId).Result;
            container = database.CreateContainerIfNotExistsAsync(containerId, "/key").Result;
            string json = "{\"id\":\"bbb\",\"key\":\"bbb\"}";
            var obj = JsonConvert.DeserializeObject(json);
            container.CreateItemAsync<Object>(obj).Wait();
            cosmosClient.Dispose();
            Console.ReadLine();
        }
    }

Результат

enter image description here

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