Azure Cosmos DB creates resources in a hierarchy consisting of accounts, databases, containers and items:
First, you’ll add a reference to the combit.ListLabel28.CosmosDBDataProvider.dll within your project (or use the equivalent NuGet package). Additionally, you’ll need the Microsoft.Azure.Cosmos NuGet package.
To establish a connection, all you have to do is create an instance of the CosmosDbDataProvider and provide the connection information in the constructor:
CosmosDbDataProvider<Family> provider = new CosmosDbDataProvider<Family>(<YourEndpointUri>, <YourPrimaryKey>, <databaseId>, <containerId>); ListLabel LL = new ListLabel(); LL.DataSource = provider; LL.Design();
Right here, a type for the generic provider class must be specified, which corresponds to the class or the record type of the element in the container. In the above example, this is the “Family” class. You’d also specify this type when you write elements into the container, or retrieve them from the container. For more information on the SQL API, please see Quickstart: Azure Cosmos DB for NoSQL Client Library for .NET.
Example: an element of the “Family” class in the Azure-Cosmos-DB container would look like this:
In the List & Label Designer, you’ll find this structure and can use it together with the relations in your report:
By using the instance we created above, you’ll receive all elements (items) that are included in the container. In order to only get certain elements (items), you’d pass an optional parameter to the constructor:
string sqlQuery = "SELECT * FROM c WHERE c.Name = 'Anderson'"; CosmosDbDataProvider<Family> provider = new CosmosDbDataProvider<Family>(<YourEndpointUri>, <YourPrimaryKey>, <databaseId>, <containerId>, sqlQuery); ListLabel LL = new ListLabel(); LL.DataSource = provider; LL.Design();
The resulting report will only show the records where “Name” property matches “Anderson”. This gives you full flexibility to adjust the amount of data to your needs.