Azure 需要帮助将项目插入Cosmos集合吗

Azure 需要帮助将项目插入Cosmos集合吗,azure,.net-core,azure-cosmosdb,Azure,.net Core,Azure Cosmosdb,我必须在收藏中插入一个项目。我必须获取的代码可以工作,但使用Microsoft.Azure.Documents.Client类。我在微软的网站上找到了一些用于插入的示例代码。它需要使用Microsoft.Azure.Cosmos类。代码有一个错误,容器未定义。所以我添加了Container Container并清除了这个错误,但是由于没有初始值设定项,我现在可以使用uninitialized object error。我的应用程序是一个.NETCore3.0WebAPI 下面的代码是我如何实现i

我必须在收藏中插入一个项目。我必须获取的代码可以工作,但使用Microsoft.Azure.Documents.Client类。我在微软的网站上找到了一些用于插入的示例代码。它需要使用Microsoft.Azure.Cosmos类。代码有一个错误,容器未定义。所以我添加了Container Container并清除了这个错误,但是由于没有初始值设定项,我现在可以使用uninitialized object error。我的应用程序是一个.NETCore3.0WebAPI

下面的代码是我如何实现insert的。是否有办法仅使用Microsoft.Azure.Cosmos库进行插入

using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using SchedulingAppointmentAPI.Models;
using System;
using System.Linq;
using System.Threading.Tasks;
using System.Net;
using Microsoft.Azure.Cosmos;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents;
using ConnectionMode = Microsoft.Azure.Documents.Client.ConnectionMode;
using Database = Microsoft.Azure.Documents.Database;
using PartitionKey = Microsoft.Azure.Cosmos.PartitionKey;

public async void SaveAppointment(Appointments appointment)
        {
            try
            {
                using (client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey,
                      new ConnectionPolicy { ConnectionMode = ConnectionMode.Gateway, ConnectionProtocol = Protocol.Https }))
                {
                    Database databasename = await client.CreateDatabaseIfNotExistsAsync(new Database { Id = DatabaseName });
                    DocumentCollection collectionname = await GetOrCreateCollectionAsync(DatabaseName, CollectionName);
                    Container container;// = await Database.CreateContainerAsync("container-id");
                    Uri collectionUri = UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName);

                    try
                    {
                        // Read the item to see if it exists.  
                        ItemResponse<Appointments> appointmentItemResponse = await container.ReadItemAsync<Appointments>(appointment.id.ToString(), new PartitionKey(appointment.Provider_Id));
                    }

                    catch (CosmosException ex) when (ex.StatusCode == HttpStatusCode.NotFound)
                    {
                        // Create an item in the container representing the appointment. Note we provide the value of the partition key for this item, which is "ProviderID"
                        ItemResponse<Appointments> appointmentItemResponse = await container.CreateItemAsync<Appointments>(appointment, new PartitionKey(appointment.Provider_Id));

                    }
使用Microsoft.Extensions.Logging;
使用Microsoft.Extensions.Options;
使用SchedulingAppointAPI.Models;
使用制度;
使用System.Linq;
使用System.Threading.Tasks;
Net系统;
使用Microsoft.Azure.Cosmos;
使用Microsoft.Azure.Documents.Client;
使用Microsoft.Azure.Documents;
使用ConnectionMode=Microsoft.Azure.Documents.Client.ConnectionMode;
使用数据库=Microsoft.Azure.Documents.Database;
使用PartitionKey=Microsoft.Azure.Cosmos.PartitionKey;
公共异步void保存约会(约会)
{
尝试
{
使用(client=newdocumentclient(newuri(EndpointUrl)),AuthorizationKey,
新连接策略{ConnectionMode=ConnectionMode.Gateway,ConnectionProtocol=Protocol.Https})
{
Database databasename=await client.CreateDatabaseIfNotExistsAsync(新数据库{Id=databasename});
DocumentCollection collectionname=等待GetOrCreateCollectionAsync(数据库名,collectionname);
Container Container;/=wait Database.createContainerSync(“容器id”);
Uri collectionUri=UriFactory.CreateDocumentCollectionUri(DatabaseName,CollectionName);
尝试
{
//阅读该项以查看它是否存在。
ItemResponse appointmentItemResponse=wait container.ReadItemAsync(appointment.id.ToString(),new PartitionKey(appointment.Provider_id));
}
当(ex.StatusCode==HttpStatusCode.NotFound)时捕获(CosmosException ex)
{
//在容器中创建一个表示约会的项。注意,我们为该项提供分区键的值,即“ProviderID”
ItemResponse appointmentItemResponse=wait container.CreateItemAsync(约会,新分区键(appointment.Provider_Id));
}

正如@David正确指出的那样,由于容器未初始化,您将得到空引用错误,您可以使用以下方法:

我们需要一个数据库和一对夫妇的集合在我们的宇宙数据库

var client = new CosmosClient(Endpoint, Authkey);
await client.Databases.CreateDatabaseIfNotExistsAsync("DatabaseId", 400);
await client.Databases["DatabaseId"].Containers.CreateContainerIfNotExistsAsync("ContainerA", "/partitionKey");
await client.Databases["DatabaseId"].Containers.CreateContainerIfNotExistsAsync("ContainerB", "/partitionKey");
要获取现有数据库/集合上的元数据,我们可以执行以下操作:

await client.Databases["DatabaseId"].ReadAsync();
await client.Databases["DatabaseId"].Containers["ContainerA"].ReadAsync();
为了创建实体,我们需要:

var item = new SampleEntity
{
    Id= Guid.NewGuid().ToString(),
    Name = "Sample",
    PartitionKey = "a"
};
CosmosItemResponse<SampleEntity> res = await container.Items.CreateItemAsync(item.PartitionKey, item);
var item=新样本实体
{
Id=Guid.NewGuid().ToString(),
Name=“Sample”,
PartitionKey=“a”
};
CosmosItemResponse res=wait container.Items.CreateItemAsync(item.PartitionKey,item);
您可以参考以下存储库来管理容器:

附加参考:


希望它能有所帮助。

正如@David正确指出的那样,由于容器未初始化,您将得到空引用错误,您可以使用以下方法:

我们需要一个数据库和一对夫妇的集合在我们的宇宙数据库

var client = new CosmosClient(Endpoint, Authkey);
await client.Databases.CreateDatabaseIfNotExistsAsync("DatabaseId", 400);
await client.Databases["DatabaseId"].Containers.CreateContainerIfNotExistsAsync("ContainerA", "/partitionKey");
await client.Databases["DatabaseId"].Containers.CreateContainerIfNotExistsAsync("ContainerB", "/partitionKey");
要获取现有数据库/集合上的元数据,我们可以执行以下操作:

await client.Databases["DatabaseId"].ReadAsync();
await client.Databases["DatabaseId"].Containers["ContainerA"].ReadAsync();
为了创建实体,我们需要:

var item = new SampleEntity
{
    Id= Guid.NewGuid().ToString(),
    Name = "Sample",
    PartitionKey = "a"
};
CosmosItemResponse<SampleEntity> res = await container.Items.CreateItemAsync(item.PartitionKey, item);
var item=新样本实体
{
Id=Guid.NewGuid().ToString(),
Name=“Sample”,
PartitionKey=“a”
};
CosmosItemResponse res=wait container.Items.CreateItemAsync(item.PartitionKey,item);
您可以参考以下存储库来管理容器:

附加参考:


希望有帮助。

您的代码没有初始化
容器
任何内容,因此无法按编写的方式工作。您的代码没有初始化
容器
任何内容,因此无法按编写的方式工作。很高兴知道它有帮助,请接受作为答案,因为它将帮助其他有同样问题的人。很高兴知道它有帮助,请接受这个答案,因为它会帮助其他有同样问题的人。