Utforska Microsoft .NET SDK v3 för Azure Cosmos DB

Slutförd

Den här lektionen fokuserar på Azure Cosmos DB .NET SDK v3 för API för NoSQL. (Microsoft.Azure.Cosmos NuGet-paket.) Om du är bekant med den tidigare versionen av .NET SDK kanske du känner till termsamlingen och dokumentet.

GitHub-lagringsplatsen azure-cosmos-dotnet-v3 innehåller de senaste .NET-exempellösningarna. Du använder dessa lösningar för att utföra CRUD (skapa, läsa, uppdatera och ta bort) och andra vanliga åtgärder på Azure Cosmos DB-resurser.

Eftersom Azure Cosmos DB stöder flera API-modeller använder version 3 av .NET SDK den allmänna termcontainern och -objektet. En container kan vara en samling, ett diagram eller en tabell. Ett objekt kan vara ett dokument, ett kant/hörn eller en rad och är innehållet i en container.

Här följer exempel som visar några av de nyckelåtgärder som du bör känna till. Fler exempel finns på GitHub-länken som visades tidigare. Exemplen nedan använder asynkron version av metoderna.

CosmosClient

Skapar en ny CosmosClient med en anslutningssträng. CosmosClient är trådsäker. Rekommendationen är att upprätthålla en enda instans av CosmosClient programmet per livslängd som möjliggör effektiv anslutningshantering och prestanda.

CosmosClient client = new CosmosClient(endpoint, key);

Databasexempel

Skapa en -databas

Metoden CosmosClient.CreateDatabaseAsync genererar ett undantag om det redan finns en databas med samma namn.

// New instance of Database class referencing the server-side database
Database database1 = await client.CreateDatabaseAsync(
    id: "adventureworks-1"
);

Kontrollerar CosmosClient.CreateDatabaseIfNotExistsAsync om det finns en databas och skapar den om den inte gör det. Endast databasen id används för att kontrollera om det finns en befintlig databas.

// New instance of Database class referencing the server-side database
Database database2 = await client.CreateDatabaseIfNotExistsAsync(
    id: "adventureworks-2"
);

Läsa en databas via ID

Läser en databas från Azure Cosmos DB-tjänsten som en asynkron åtgärd.

DatabaseResponse readResponse = await database.ReadAsync();

Ta bort en databas

Ta bort en databas som en asynkron åtgärd.

await database.DeleteAsync();

Containerexempel

Skapa en container

Metoden Database.CreateContainerIfNotExistsAsync kontrollerar om det finns en container, och om den inte gör det skapar den den. Endast containern id används för att kontrollera om det finns en befintlig container.

// Set throughput to the minimum value of 400 RU/s
ContainerResponse simpleContainer = await database.CreateContainerIfNotExistsAsync(
    id: containerId,
    partitionKeyPath: partitionKey,
    throughput: 400);

Hämta en container efter ID

Container container = database.GetContainer(containerId);
ContainerProperties containerProperties = await container.ReadContainerAsync();

Ta bort en container

Ta bort en container som en asynkron åtgärd.

await database.GetContainer(containerId).DeleteContainerAsync();

Objektexempel

Skapa ett objekt

Container.CreateItemAsync Använd metoden för att skapa ett objekt. Metoden kräver ett JSON-serialiserbart objekt som måste innehålla en id egenskap och en partitionKey.

ItemResponse<SalesOrder> response = await container.CreateItemAsync(salesOrder, new PartitionKey(salesOrder.AccountNumber));

Läsa ett objekt

Container.ReadItemAsync Använd metoden för att läsa ett objekt. Metoden kräver typ för att serialisera objektet till tillsammans med en id egenskap och en partitionKey.

string id = "[id]";
string accountNumber = "[partition-key]";
ItemResponse<SalesOrder> response = await container.ReadItemAsync(id, new PartitionKey(accountNumber));

Fråga efter ett objekt

Metoden Container.GetItemQueryIterator skapar en fråga för objekt under en container i en Azure Cosmos-databas med hjälp av en SQL-instruktion med parametriserade värden. Den returnerar en FeedIterator.

QueryDefinition query = new QueryDefinition(
    "select * from sales s where s.AccountNumber = @AccountInput ")
    .WithParameter("@AccountInput", "Account1");

FeedIterator<SalesOrder> resultSet = container.GetItemQueryIterator<SalesOrder>(
    query,
    requestOptions: new QueryRequestOptions()
    {
        PartitionKey = new PartitionKey("Account1"),
        MaxItemCount = 1
    });

Andra resurser