Azure Cosmos DB and its use with .NET

Sardar Mudassar Ali Khan
2 min readJan 28, 2024

Azure Cosmos DB is a globally distributed, multi-model database service offered by Microsoft Azure. It’s designed to provide high availability, scalability, and low-latency access to data for cloud-native applications. With its support for various data models, including document, key-value, graph, and column family, Azure Cosmos DB is a versatile choice for a wide range of use cases.

Key Features of Azure Cosmos DB:

  1. Global Distribution: Azure Cosmos DB allows you to replicate data across multiple Azure regions globally, ensuring low latency access for users worldwide.
  2. Multi-model Support: Whether your data is structured or unstructured, Azure Cosmos DB supports multiple data models, giving you the flexibility to choose the best model for your application.
  3. Elastic Scalability: Azure Cosmos DB offers elastic scalability, allowing you to scale both throughput and storage independently based on your application’s needs.
  4. Enterprise-grade Security: Azure Cosmos DB integrates seamlessly with Azure Active Directory for authentication and supports encryption at rest and in transit to ensure data security and compliance.
  5. Consistency Levels: You can choose from a range of consistency levels, including strong, bounded staleness, session, or eventual consistency, depending on your application’s requirements.

Integration with .NET:

Azure Cosmos DB provides a .NET SDK that simplifies the process of integrating Cosmos DB with .NET applications. Here’s how you can get started with Azure Cosmos DB in a .NET application:

Step 1: Install the Azure Cosmos DB SDK

You can install the Azure Cosmos DB SDK via NuGet Package Manager or .NET CLI using the following command:

dotnet add package Microsoft.Azure.Cosmos

Step 2: Create a CosmosClient Instance

Initialize a CosmosClient instance with your Cosmos DB account's connection string:

using Microsoft.Azure.Cosmos;
CosmosClient cosmosClient = new CosmosClient("your_connection_string");

Step 3: Work with Databases and Containers

Use the Database and Container classes to interact with databases and containers in Cosmos DB:

Database database = await cosmosClient.CreateDatabaseIfNotExistsAsync("YourDatabaseId");
Container container = await database.CreateContainerIfNotExistsAsync("YourContainerId", "/PartitionKey");

Step 4: Perform CRUD Operations

Use the Item and Container classes to perform CRUD operations on documents within containers:

YourItem item = new YourItem { Id = "1", Name = "John" };
ItemResponse<YourItem> response = await container.CreateItemAsync<YourItem>(item);

Step 5: Query Data

Execute SQL queries against Cosmos DB using the Container class:

QueryDefinition queryDefinition = new QueryDefinition("SELECT * FROM c WHERE c.Name = @name")
.WithParameter("@name", "John");
FeedIterator<YourItem> queryResultSetIterator = container.GetItemQueryIterator<YourItem>(queryDefinition);
while (queryResultSetIterator.HasMoreResults)
FeedResponse<YourItem> currentResultSet = await queryResultSetIterator.ReadNextAsync();
foreach (YourItem currentItem in currentResultSet)

Step 6: Handle Throughput and Performance

Azure Cosmos DB allows you to configure throughput settings based on your application’s needs to ensure optimal performance and cost-efficiency.


Azure Cosmos DB, combined with its seamless integration with .NET, empowers developers to build highly scalable and globally distributed applications with ease. By leveraging the Azure Cosmos DB SDK for .NET, developers can take advantage of its rich features and APIs to create robust and efficient cloud-native solutions that meet the demands of modern applications.



Sardar Mudassar Ali Khan

8x-Microsoft Certified Senior Software Engineer | MCT|MCT |Microsoft Certified Cloud Solution Architect | Microsoft Certified Cloud Developer | Technical Author