Seznámení se sadou Microsoft .NET SDK v3 pro Azure Cosmos DB

Dokončeno

Tato lekce se zaměřuje na sadu .NET SDK služby Azure Cosmos DB v3 pro rozhraní API for NoSQL. (Balíček NuGet Microsoft.Azure.Cosmos .) Pokud znáte předchozí verzi sady .NET SDK, možná znáte kolekci termínů a dokument.

Úložiště GitHubu azure-cosmos-dotnet-v3 obsahuje nejnovější ukázková řešení .NET. Tato řešení slouží k provádění operací CRUD (vytvoření, čtení, aktualizace a odstranění) a dalších běžných operací s prostředky Azure Cosmos DB.

Protože Azure Cosmos DB podporuje více modelů rozhraní API, verze 3 sady .NET SDK používá kontejner a položku obecných termínů. Kontejner může být kolekce, graf nebo tabulka. Položka může být dokument, hrana nebo vrchol nebo řádek a je obsahem uvnitř kontejneru.

Následuje příklad ukazující některé klíčové operace, se kterými byste měli být obeznámeni. Další příklady najdete na odkazu GitHubu, který jste si zobrazili dříve. Následující příklady používají asynchronní verzi metod.

CosmosClient

Vytvoří nový CosmosClient s připojovací řetězec. CosmosClient je bezpečný pro přístup z více vláken. Doporučujeme udržovat jednu instanci CosmosClient aplikace po celou dobu životnosti, která umožňuje efektivní správu a výkon připojení.

CosmosClient client = new CosmosClient(endpoint, key);

Příklady pro databáze

Vytvořit databázi

Metoda CosmosClient.CreateDatabaseAsync vyvolá výjimku, pokud databáze se stejným názvem již existuje.

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

Kontroly CosmosClient.CreateDatabaseIfNotExistsAsync , jestli databáze existuje, a pokud ne, vytvoří ji. K ověření, jestli existuje existující databáze, se používá pouze databáze id .

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

Čtení databáze podle ID

Načte databázi ze služby Azure Cosmos DB jako asynchronní operaci.

DatabaseResponse readResponse = await database.ReadAsync();

Odstranění databáze

Odstranění databáze jako asynchronní operace

await database.DeleteAsync();

Příklady pro kontejnery

Vytvoření kontejneru

Metoda Database.CreateContainerIfNotExistsAsync zkontroluje, jestli kontejner existuje, a pokud ne, vytvoří ho. K ověření, jestli existuje existující kontejner, se používá pouze kontejner id .

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

Získání kontejneru podle ID

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

Odstranění kontejneru

Odstraňte kontejner jako asynchronní operaci.

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

Příklady pro položky

Vytvoření položky

Container.CreateItemAsync Pomocí metody vytvořte položku. Metoda vyžaduje serializovatelný objekt JSON, který musí obsahovat id vlastnost a partitionKey.

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

Čtení položky

Použijte metodu Container.ReadItemAsync ke čtení položky. Metoda vyžaduje typ serializace položky spolu s id vlastností a a partitionKey.

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

Dotazování položky

Metoda Container.GetItemQueryIterator vytvoří dotaz na položky v kontejneru v databázi Azure Cosmos pomocí příkazu SQL s parametrizovanými hodnotami. Vrátí hodnotu 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
    });

Další prostředky