Microsoft .NET SDK v3 voor Azure Cosmos DB verkennen

Voltooid

Deze les is gericht op Azure Cosmos DB .NET SDK v3 for API for NoSQL. (Microsoft.Azure.Cosmos NuGet-pakket.) Als u bekend bent met de vorige versie van de .NET SDK, bent u mogelijk bekend met de termenverzameling en het document.

De GitHub-opslagplaats azure-cosmos-dotnet-v3 bevat de nieuwste .NET-voorbeeldoplossingen. U gebruikt deze oplossingen om CRUD uit te voeren (maken, lezen, bijwerken en verwijderen) en andere algemene bewerkingen op Azure Cosmos DB-resources.

Omdat Azure Cosmos DB ondersteuning biedt voor meerdere API-modellen, gebruikt versie 3 van de .NET SDK de algemene termencontainer en het item. Een container kan een verzameling, een graaf of een tabel zijn. Een item kan een document, rand/hoekpunt of rij zijn en is de inhoud binnen een container.

Hieronder vindt u voorbeelden van enkele belangrijke bewerkingen waarmee u bekend moet zijn. Ga naar de GitHub-koppeling die eerder is weergegeven voor meer voorbeelden. In de onderstaande voorbeelden wordt de asynchrone versie van de methoden gebruikt.

CosmosClient

Hiermee maakt u een nieuwe CosmosClient met een verbindingsreeks. CosmosClient is thread-safe. De aanbeveling is om één exemplaar van elke levensduur van CosmosClient de toepassing te onderhouden dat efficiënt verbindingsbeheer en -prestaties mogelijk maakt.

CosmosClient client = new CosmosClient(endpoint, key);

Voorbeelden voor databases

Een -database maken

De CosmosClient.CreateDatabaseAsync methode genereert een uitzondering als er al een database met dezelfde naam bestaat.

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

De CosmosClient.CreateDatabaseIfNotExistsAsync controles of er een database bestaat en als dat niet het probleem is, maakt u deze. Alleen de database id wordt gebruikt om te controleren of er een bestaande database is.

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

Een database lezen op id

Leest een database uit de Azure Cosmos DB-service als asynchrone bewerking.

DatabaseResponse readResponse = await database.ReadAsync();

Een database verwijderen

Een database verwijderen als asynchrone bewerking.

await database.DeleteAsync();

Voorbeelden van containers

Een container maken

De Database.CreateContainerIfNotExistsAsync methode controleert of er een container bestaat en als dit niet het probleem is, wordt deze gemaakt. Alleen de container id wordt gebruikt om te controleren of er een bestaande container is.

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

Een container ophalen op basis van id

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

Een container verwijderen

Een container verwijderen als asynchrone bewerking.

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

Voorbeelden van items

Een item maken

Gebruik de Container.CreateItemAsync methode om een item te maken. Voor de methode is een JSON-serializeerbaar object vereist dat een id eigenschap moet bevatten en een partitionKey.

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

Een item lezen

Gebruik de Container.ReadItemAsync methode om een item te lezen. Voor de methode is het type vereist om het item te serialiseren, samen met een id eigenschap en een partitionKey.

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

Een query uitvoeren op een item

Met Container.GetItemQueryIterator de methode maakt u een query voor items onder een container in een Azure Cosmos-database met behulp van een SQL-instructie met geparameteriseerde waarden. Het retourneert een 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
    });

Meer informatie