Step by step: .NET Core and Azure Cosmos DB
3 minute read
Step by step: .NET Core and Azure Cosmos DB is a short post on how to connect to Cosmos DB, save a document and then query to find it.
Let’s start:
Create a Cosmos DB account
Create a Cosmos DB account in your Azure subscription. Once created get the URI and the primary Read-write key from the Keys section.
If you need info on how to do this browse to the Create a database account section here: https://docs.microsoft.com/en-us/azure/cosmos-db/create-documentdb-dotnet
Create a folder for your new project
Open a command promt an run
mkdir cosmosdb
Create the project
cd cosmosdb
dotnet new console
Add a reference to the Microsoft.Azure.DocumentDB.Core library
Add a reference to the Microsoft.Azure.DocumentDB.Core client library so you are able to talk with Cosmos Db.
dotnet add package Microsoft.Azure.DocumentDB.Core -v 1.3.2
Restore packages
You just modified the project dependencies so please restore the packages with the following command:
dotnet restore
Modify Program.cs
Replace the contents of the Program.cs file with the following code and remember to change lines 13 and 16 with your account URI and Key
using System;
using System.Linq;
using Microsoft.Azure.Documents;
using Microsoft.Azure.Documents.Client;
namespace cosmosdb
{
class Program
{
static void Main(string[] args)
{
// The endpoint to your cosmosdb instance
var endpointUrl = "[THE ENPOINT OF YOUR COSMOSDB SERVICE HERE]";
// The key to you cosmosdb
var key = "[THE KEY OF YOUR COSMOSDB SERVICE HERE]";
// The name of the database
var databaseName = "Students";
// The name of the collection of json documents
var databaseCollection = "StudentsCollection";
// Create a cosmosdb client
using (var client = new DocumentClient(new Uri(endpointUrl), key))
{
// Create the database
client.CreateDatabaseIfNotExistsAsync(new Database() { Id = databaseName }).GetAwaiter().GetResult();
// Create the collection
client.CreateDocumentCollectionIfNotExistsAsync(
UriFactory.CreateDatabaseUri(databaseName),
new DocumentCollection { Id = databaseCollection }).
GetAwaiter()
.GetResult();
// Create a Student instance
var student = new Student() { Id = "Student.1", Name = "Carlos", LastName = "Mendible" };
// Sava the document to cosmosdb
client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(databaseName, databaseCollection), student)
.GetAwaiter().GetResult();
Console.WriteLine($"Student was saved in the database with id: {student.Id}");
// Query for the student by last name
var query = client.CreateDocumentQuery<Student>(
UriFactory.CreateDocumentCollectionUri(databaseName, databaseCollection))
.Where(f => f.LastName == "Mendible")
.ToList();
if (query.Any())
{
Console.WriteLine("Student was found in the cosmosdb database");
}
}
}
}
/// <summary>
/// A simple class representing a Student
/// </summary>
public class Student
{
public string Id { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
}
}
Build
Build the application with the following command
dotnet build
Run
You are good to go so run the application
dotnet run
You can get the code here: https://github.com/cmendible/dotnetcore.samples/tree/main/cosmosdb
Hope it helps!