【问题标题】:Query Documents in CosmosDB using C#使用 C# 在 CosmosDB 中查询文档
【发布时间】:2018-06-06 01:00:05
【问题描述】:

我有几个文档存储在 Azure CosmosDB 数据库中,我想从我的应用程序中查询它们。我的应用程序是用 C# 编写的,我想使用 C# 进行查询。

现在,我可以使用包含查询的 Azure 函数来执行此操作,然后连接到我的程序(我连接到托管 Azure 函数的 Web 应用程序),但我对这个解决方案并不完全满意,主要是因为我必须通过门户的 GUI 创建 Azure Function。有没有办法在 Visual Studio 中本地编写 Azure 函数并将其集成到我的解决方案中?或者,我愿意以任何方式从 Visual Studio 中的代码(可能是 C# 和 JSON?)查询 CosmosDB 文档。

【问题讨论】:

  • 已经发布了大量文档,用于从各种语言(包括 C#)中使用 Cosmos DB。所以,是的,您可以直接查询 Cosmos DB。但是,问题本身非常广泛(有很多方法可以使用 Cosmos DB)。请查看一些文档,然后根据您遇到的问题发布具体问题。

标签: c# azure azure-cosmosdb


【解决方案1】:

有没有办法在 Visual Studio 中本地编写 Azure Function 并将其集成到我的解决方案中?

是的,我们可以在 Visual Studio 中本地编写 Azure Function 并将其集成到我们的 VS 解决方案中。关于怎么做,我们可以参考:Azure Functions Tools for Visual Studio

我愿意以任何方式从 Visual Studio 中的代码(可能是 C# 和 JSON?)中查询 CosmosDB 文档

这是一个简单的演示供您参考:

    public static List<T> QueryAllDocument(string Uri, string Key, string DatabaseName, string CollectionName)
    {
        DocumentClient client = new DocumentClient(new Uri(Uri), Key, new ConnectionPolicy { EnableEndpointDiscovery = false });
        List<T> list = client.CreateDocumentQuery<T>(UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName).ToString(), new SqlQuerySpec("SELECT * FROM c"), new FeedOptions { MaxItemCount = -1 }).ToList<T>();
        return list;
    }

更多信息供您参考:

Azure Cosmos DB: .NET examples for the SQL API

SQL queries for Azure Cosmos DB

【讨论】:

  • 我需要有一个TestEntity 的类吗?现在,我只有 CosmosDB 中的数据 - 有没有办法在没有模型的情况下查询它(例如,有 List 或类似性质的东西)?
  • 原来的问题基本上是一个是/否的问题,如所写;请不要发布通用示例,因为它没有回答特定问题。已经发布了大量的文档(和示例)。但是您的示例没有回答任何特定的编程问题。
  • @JoshK。是的,我们可以使用动态来替换指定模型,作为更好的方法,我们可以使用泛型方法,我已经更新了我的答案。
  • @DavidMakogon 谢谢你的建议,我已经修改了我的答案并提供了文件。
【解决方案2】:

如果您不想使用微软当时提供的 .NET SDK,有一个名为 Cosmonaut 的 C# 库可以让您在应用程序中轻松查询 CosmosDB。

您可以使用 Cosmos 的 SQL 进行查询

var user = await cosmoStore.QueryMultipleAsync<dynamic>("select * from c w.Firstname = 'Smith'");

但它也支持模型映射和实体的异步查询。

免责声明:我是 Cosmonaut 的创造者

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    相关资源
    最近更新 更多