Eksplorowanie zestawu Microsoft .NET SDK w wersji 3 dla usługi Azure Cosmos DB

Ukończone

Ta lekcja koncentruje się na zestawie .NET SDK platformy .NET usługi Azure Cosmos DB w wersji 3 dla interfejsu API dla noSQL. (Pakiet NuGet Microsoft.Azure.Cosmos ). Jeśli znasz poprzednią wersję zestawu .NET SDK, możesz zapoznać się z kolekcją terminów i dokumentami.

Repozytorium GitHub azure-cosmos-dotnet-v3 zawiera najnowsze przykładowe rozwiązania platformy .NET. Te rozwiązania umożliwiają wykonywanie operacji CRUD (tworzenie, odczytywanie, aktualizowanie i usuwanie) oraz inne typowe operacje na zasobach usługi Azure Cosmos DB.

Ponieważ usługa Azure Cosmos DB obsługuje wiele modeli interfejsu API, wersja 3 zestawu .NET SDK używa ogólnych terminów kontenera i elementu. Kontener może być kolekcją, grafem lub tabelą. Element może być dokumentem, krawędzią/wierzchołkiem lub wierszem i jest zawartością wewnątrz kontenera.

Poniżej przedstawiono przykłady pokazujące niektóre kluczowe operacje, które należy znać. Aby uzyskać więcej przykładów, odwiedź link GitHub pokazany wcześniej. W poniższych przykładach użyto asynchronicznej wersji metod.

CosmosClient

Tworzy nowy CosmosClient przy użyciu parametry połączenia. CosmosClient jest bezpieczny wątkowo. Zaleca się zachowanie pojedynczego CosmosClient wystąpienia na cały okres istnienia aplikacji, która umożliwia wydajne zarządzanie połączeniami i wydajność.

CosmosClient client = new CosmosClient(endpoint, key);

Przykłady dotyczące baz danych

Utwórz bazę danych

Metoda CosmosClient.CreateDatabaseAsync zgłasza wyjątek, jeśli baza danych o tej samej nazwie już istnieje.

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

Sprawdza CosmosClient.CreateDatabaseIfNotExistsAsync , czy baza danych istnieje, a jeśli nie, tworzy ją. Tylko baza danych id jest używana do sprawdzania, czy istnieje istniejąca baza danych.

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

Odczytywanie bazy danych na podstawie identyfikatora

Odczytuje bazę danych z usługi Azure Cosmos DB jako operację asynchroniczną.

DatabaseResponse readResponse = await database.ReadAsync();

Usuwanie bazy danych

Usuń bazę danych jako operację asynchroniczną.

await database.DeleteAsync();

Przykłady dotyczące kontenerów

Tworzenie kontenera

Metoda Database.CreateContainerIfNotExistsAsync sprawdza, czy kontener istnieje, a jeśli nie, tworzy go. Tylko kontener id jest używany do sprawdzania, czy istnieje istniejący kontener.

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

Pobieranie kontenera według identyfikatora

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

Usuwanie kontenera

Usuń kontener jako operację asynchroniczną.

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

Przykłady dotyczące elementów

Tworzenie elementu

Container.CreateItemAsync Użyj metody , aby utworzyć element. Metoda wymaga obiektu z możliwością serializacji JSON, który musi zawierać id właściwość i partitionKey.

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

Odczytywanie elementu

Container.ReadItemAsync Użyj metody , aby odczytać element. Metoda wymaga, aby typ serializować element wraz z właściwością id i .partitionKey

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

Wykonywanie zapytań względem elementu

Metoda Container.GetItemQueryIterator tworzy zapytanie dotyczące elementów w kontenerze w bazie danych usługi Azure Cosmos przy użyciu instrukcji SQL z wartościami sparametryzowanymi. Zwraca wartość 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
    });

Inne zasoby