我有以下代码:
CosmosClientOptions options = new CosmosClientOptions() { AllowBulkExecution = true };
CosmosClient cosmosclient = new CosmosClient(connStr, options);
Container container = cosmosclient.GetContainer("CoachAPI", "Vessels");
await VesselsContainer.DeleteItemAsync<CoachVessel>("81c91c3a4f4841529bf36badfbb4a2ba", new PartitionKey("name"));
or
await VesselsContainer.DeleteItemAsync<CoachVessel>("81c91c3a4f4841529bf36badfbb4a2ba", new PartitionKey("XXXa Soya"));
运行代码时,我得到:
代码不表示成功:NotFound(404);子状态:0; ActivityId :;原因:();'
任何指针如何解决此问题?
分区密钥:/ name
答案 0 :(得分:0)
该代码已经过亲自测试,您可以将其直接复制到您的项目中并运行它。
项目格式如图所示。
using System;
using System.Threading.Tasks;
using System.Configuration;
using System.Collections.Generic;
using System.Net;
using Microsoft.Azure.Cosmos;
using System.Linq;
namespace CosmosGettingStartedTutorial
{
class Program
{
// <Main>
public static async Task Main(string[] args)
{
try
{
Console.WriteLine("Beginning operations...\n");
CosmosClient client = new CosmosClient("https://localhost:8081/", "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==");
Database database = await client.CreateDatabaseIfNotExistsAsync("Items");
Container container = database.GetContainer("test");
// Query for an item
FeedIterator <response> feedIterator = container.GetItemQueryIterator<response>("SELECT * FROM c");
List<Task> concurrentDeleteTasks = new List<Task>();
while (feedIterator.HasMoreResults)
{
FeedResponse<response> res = await feedIterator.ReadNextAsync();
foreach (var item in res)
{
concurrentDeleteTasks.Add(container.DeleteItemAsync<response>(item.id, new PartitionKey(item.adress)));
}
}
await Task.WhenAll(concurrentDeleteTasks.Take(3));
}
catch (CosmosException de)
{
Exception baseException = de.GetBaseException();
Console.WriteLine("{0} error occurred: {1}", de.StatusCode, de);
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e);
}
finally
{
Console.WriteLine("End of demo, press any key to exit.");
Console.ReadKey();
}
}
public class response
{
public string id { get; set; }
public string adress { get; set; }
public string _rid { get; set; }
public string _self { get; set; }
public string _etag { get; set; }
public string _attachments { get; set; }
public long _ts { get; set; }
}
}
}
答案 1 :(得分:0)
确保您使用正确的容器。 你的情况
Container container = cosmosclient.GetContainer("CoachAPI", "Vessels");
await container.DeleteItemAsync<CoachVessel>("81c91c3a4f4841529bf36badfbb4a2ba", new PartitionKey("XXXa Soya"));
代替
Container container = cosmosclient.GetContainer("CoachAPI", "Vessels");
await VesselsContainer.DeleteItemAsync<CoachVessel>("81c91c3a4f4841529bf36badfbb4a2ba", new PartitionKey("XXXa Soya"));