CosmosDb - returns 空属性 .NET

CosmosDb - returns null properties .NET

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

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

我试图简单地添加一个新的 class:

 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 - 好像映射不起作用:

然后我尝试了类似的方法

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;
        }
    }
}

但是这个查询returns没有结果。

我不知道哪里出了问题。

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

我唯一觉得奇怪的是,元素被标记为'documents'

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

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;
        }
    }
}

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

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

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

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

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