gpt4 book ai didi

c# - CosmosDb - 返回 null 属性 .NET

转载 作者:行者123 更新时间:2023-12-03 07:03:38 26 4
gpt4 key购买 nike

我在下载 CosmosDb 数据时遇到问题,即使按照教程中的方式进行也是如此。

一开始,我的 CosmosDb 看起来像这样:

enter image description here

我尝试简单地添加一个新类:

 public class CaseModel
{
[JsonProperty("_id")]
public string Id { get; set; }
[JsonProperty("vin")]
public string Vin { get; set; }
}

然后按照文档中提到的那样进行

using (FeedIterator<Case> iterator = collection.GetItemLinqQueryable<Case>(true).ToFeedIterator())
{
while (iterator.HasMoreResults)
{
foreach (var item in await iterator.ReadNextAsync())
{
var x = item;
}
}
}

这样,代码就会迭代许多元素(就像它正在工作一样),但属性始终为 null - 就好像映射不起作用:

enter image description here

然后我尝试了这样的事情

using (FeedIterator<Case> feedIterator = collection.GetItemQueryIterator<Case>(
"select * from cases",
null,
new QueryRequestOptions() { PartitionKey = new PartitionKey("shardedKey") }))
{
while (feedIterator.HasMoreResults)
{
foreach (var item in await feedIterator.ReadNextAsync())
{
var x = item;
}
}
}

但是这个查询没有返回结果。

我不知道出了什么问题。

最近,一年前我在 Azure 上使用 CosmosDb,并做了一些类似的事情。

我认为唯一奇怪的是元素被标记为“文档”

enter image description here

最后,我的代码应该是这样的

var dbClient = new CosmosClient(info.ConnectionString);
var db = dbClient.GetDatabase(info.DatabaseName);
var collection = db.GetContainer(info.Collection);

using (FeedIterator<CaseModel> iterator = collection.GetItemLinqQueryable<CaseModel>(true)
.ToFeedIterator())
{
while (iterator.HasMoreResults)
{
foreach (var item in await iterator.ReadNextAsync())
{
var x = item;
}
}
}

在调试窗口中,我看到开头的 3 个步骤(例如使用连接字符串进行连接,然后获取数据库,然后获取容器)有效。

最佳答案

您正在混合 API。您引用的 SDK (Microsoft.Azure.Cosmos) 是 SQL API SDK:https://learn.microsoft.com/azure/cosmos-db/sql/sql-api-sdk-dotnet-standard

您问题中的屏幕截图来自 Mongo API 帐户

您可以使用该 SDK 的 SQL API 帐户,也可以使用 C# Mongo driver与您的 Mongo API 帐户进行交互。

SQL API 帐户使用 id 作为 Id/文档标识符的属性,而不是 _id

关于c# - CosmosDb - 返回 null 属性 .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71848026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com