Události
Vytváření aplikací a agentů AI
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
PLATÍ PRO: NoSQL
Sada Azure SDK pro .NET umožňuje přidat data do kontejneru API pro NoSQL buď asynchronní jednotlivé operace , nebo transakční dávku. Tento kurz vás provede procesem vytvoření nové konzolové aplikace .NET, která do kontejneru přidá více položek.
V tomto kurzu se naučíte:
Nejprve vytvořte prázdnou databázi v existujícím účtu rozhraní API pro NoSQL. Kontejner vytvoříte pomocí sady Azure SDK pro .NET později.
Na webu Azure Portal přejděte ke svému stávajícímu účtu API for NoSQL.
V nabídce prostředků vyberte Klíče.
Na stránce Klíče sledujte a poznamenejte hodnotu polí identifikátoru URI a PRIMÁRNÍ KLÍČ. Tyto hodnoty se používají v průběhu kurzu.
V nabídce prostředků vyberte Průzkumník dat.
Na stránce Průzkumník dat vyberte na panelu příkazů možnost Nová databáze.
V dialogovém okně Nová databáze vytvořte nový kontejner s následujícím nastavením:
Hodnota | |
---|---|
ID databáze | cosmicworks |
Typ propustnosti databáze | Ruční |
Velikost propustnosti databáze | 400 |
Vyberte OK a vytvořte databázi.
Teď vytvoříte novou konzolovou aplikaci .NET a naimportujete sadu Azure SDK pro .NET pomocí Microsoft.Azure.Cosmos
knihovny z NuGetu.
Otevřete terminál v prázdném adresáři.
Vytvoření nové konzolové aplikace pomocí console
předdefinované šablony
dotnet new console --langVersion preview
Přidejte verzi Microsoft.Azure.Cosmos
balíčku verze 3.31.1-Preview z NuGetu.
dotnet add package Microsoft.Azure.Cosmos --version 3.31.1-preview
Přidejte také předběžnou verzi System.CommandLine
balíčku z NuGetu.
dotnet add package System.CommandLine --prerelease
Humanizer
Přidejte také balíček z NuGetu.
dotnet add package Humanizer
Sestavte projekt konzolové aplikace.
dotnet build
Otevřete Visual Studio Code pomocí aktuální složky projektu jako pracovního prostoru.
Tip
V terminálu můžete spustit code .
visual Studio Code a automaticky otevřít pracovní adresář jako aktuální pracovní prostor.
Přejděte na soubor Program.cs a otevřete ho. Odstraňte veškerý existující kód v souboru.
Přidejte tento kód do souboru pro použití knihovny System.CommandLine k analýze příkazového řádku pro dva řetězce předané prostřednictvím --first
a --last
možností.
using System.CommandLine;
var command = new RootCommand();
var nameOption = new Option<string>("--name") { IsRequired = true };
var emailOption = new Option<string>("--email");
var stateOption = new Option<string>("--state") { IsRequired = true };
var countryOption = new Option<string>("--country") { IsRequired = true };
command.AddOption(nameOption);
command.AddOption(emailOption);
command.AddOption(stateOption);
command.AddOption(countryOption);
command.SetHandler(
handle: CosmosHandler.ManageCustomerAsync,
nameOption,
emailOption,
stateOption,
countryOption
);
await command.InvokeAsync(args);
Poznámka
Pro účely tohoto kurzu není zcela důležité pochopit, jak analyzátor příkazového řádku funguje. Analyzátor má čtyři možnosti, které je možné zadat při spuštění aplikace. Tři z těchto možností jsou povinné, protože se použijí k vytvoření polí ID a klíče oddílu.
V tomto okamžiku se projekt nevytvoře, protože jste ještě nedefinovat statickou CosmosHandler.ManageCustomerAsync
metodu.
Uložte soubor Program.cs.
Dále pomocí jednotlivých operací přidáte položky do kontejneru API pro NoSQL. V této části definujete metodu CosmosHandler.ManageCustomerAsync
.
Vytvořte nový soubor CosmosHandler.cs .
Do souboru CosmosHandler.cs přidejte novou direktivu using pro obory Humanizer
názvů a Microsoft.Azure.Cosmos
obory názvů.
using Humanizer;
using Microsoft.Azure.Cosmos;
Vytvořte novou statickou třídu s názvem CosmosHandler
.
public static class CosmosHandler
{ }
Stačí ověřit, že tato aplikace funguje, vytvořte krátkou implementaci statické ManageCustomerAsync
metody pro tisk vstupu příkazového řádku.
public static async Task ManageCustomerAsync(string name, string email, string state, string country)
{
await Console.Out.WriteLineAsync($"Hello {name} of {state}, {country}!");
}
Uložte soubor CosmosHandler.cs.
Zpátky v terminálu spusťte aplikaci.
dotnet run -- --name 'Mica Pereira' --state 'Washington' --country 'United States'
Výstupem příkazu by měl být zábavný pozdrav.
Hello Mica Pereira of Washington, United States!
Vraťte se do souboru CosmosHandler.cs .
Ve statické třídě CosmosHandler přidejte nového private static readonly
člena typu CosmosClient
s názvem _client
.
private static readonly CosmosClient _client;
Vytvořte nový statický konstruktor pro CosmosHandler
třídu.
static CosmosHandler()
{ }
V rámci konstruktoru CosmosClient
vytvořte novou instanci třídy, která předává dva parametry řetězce s hodnotami URI a PRIMARY KEY , které jste předtím zaznamenali v testovacím prostředí. Uložte tuto novou instanci do člena _client
.
static CosmosHandler()
{
_client = new CosmosClient(
accountEndpoint: "<uri>",
authKeyOrResourceToken: "<primary-key>"
);
}
Zpět ve statické třídě CosmosHandler vytvořte novou asynchronní metodu s názvemGetContainerAsync
, která vrací .Container
private static async Task<Container> GetContainerAsync()
{ }
Pro další kroky přidejte tento kód do GetContainerAsync
metody.
cosmicworks
Získejte databázi a uložte ji do proměnné s názvem database
.
Database database = _client.GetDatabase("cosmicworks");
Vytvořte nový obecný typ List<>
string
hodnot v seznamu hierarchických cest klíčů oddílu a uložte ho do proměnné s názvem keyPaths
.
List<string> keyPaths = new()
{
"/address/country",
"/address/state"
};
Vytvořte novou ContainerProperties
proměnnou s názvem kontejneru (customers
) a seznamem cest klíče oddílu.
ContainerProperties properties = new(
id: "customers",
partitionKeyPaths: keyPaths
);
CreateContainerIfNotExistsAsync
Pomocí metody zadejte vlastnosti kontejneru a načtěte kontejner. Tato metoda podle názvu asynchronně vytvoří kontejner, pokud ještě v databázi neexistuje. Vrátí výsledek jako výstup GetContainerAsync
metody.
return await database.CreateContainerIfNotExistsAsync(
containerProperties: properties
);
Odstraňte veškerý kód v rámci ManageCustomerAsync
metody.
Pro další kroky přidejte tento kód do ManageCustomerAsync
metody.
Asynchronní volání GetContainerAsync
metody a uložení výsledku do proměnné s názvem container
.
Container container = await GetContainerAsync();
Vytvořte novou proměnnou s názvemid
, která pomocí Kebaberize
metody Humanizer transformuje name
parametr metody.
string id = name.Kebaberize();
Poznámka
Metoda Kebaberize
nahradí všechny mezery pomlčkami a konveruje text na malá písmena.
Pomocí parametrů a parametrů metody a country
proměnné vytvořte novou anonymní typovou položkuname
.id
state
Uložte položku jako proměnnou s názvem customer
.
var customer = new {
id = id,
name = name,
address = new {
state = state,
country = country
}
};
Pomocí asynchronní CreateItemAsync
metody kontejneru vytvořte novou položku v kontejneru a přiřaďte metadata odpovědi HTTP proměnné s názvem response
.
var response = await container.CreateItemAsync(customer);
Napište do konzoly hodnoty proměnných response
StatusCode
a RequestCharge
vlastností. Zapište také hodnotu id
proměnné.
Console.WriteLine($"[{response.StatusCode}]\t{id}\t{response.RequestCharge} RUs");
Uložte soubor CosmosHandler.cs.
Zpátky v terminálu spusťte aplikaci znovu.
dotnet run -- --name 'Mica Pereira' --state 'Washington' --country 'United States'
Výstup příkazu by měl obsahovat stav a poplatek za operaci.
[Created] mica-pereira 7.05 RUs
Poznámka
Poplatek za vaši žádost se může lišit.
Spusťte aplikaci ještě jednou.
dotnet run -- --name 'Mica Pereira' --state 'Washington' --country 'United States'
Tentokrát by program měl dojít k chybovému ukončení. Pokud se posunete chybovou zprávou, zobrazí se chybové ukončení kvůli konfliktu v jedinečném identifikátoru položek.
Unhandled exception: Microsoft.Azure.Cosmos.CosmosException : Response status code does not indicate success: Conflict (409);Reason: (
Errors : [
"Resource with specified id or name already exists."
]
);
Teď, když jste vytvořili první položku v kontejneru, můžete k načtení položky použít stejnou sadu SDK. Tady provedete dotaz a načtete položku a porovnáte rozdíl v spotřebě jednotek žádosti (RU).
Vraťte se do souboru CosmosHandler.cs nebo ho otevřete.
Odstraňte všechny řádky kódu z ManageCustomerAsync
metody s výjimkou prvních dvou řádků.
public static async Task ManageCustomerAsync(string name, string email, string state, string country)
{
Container container = await GetContainerAsync();
string id = name.Kebaberize();
}
Pro další kroky přidejte tento kód do ManageCustomerAsync
metody.
Pomocí asynchronní CreateItemAsync
metody kontejneru vytvořte novou položku v kontejneru a přiřaďte metadata odpovědi HTTP proměnné s názvem response
.
var response = await container.CreateItemAsync(customer);
Vytvořte nový řetězec s názvem sql
dotazu SQL, který načte položky, ve kterých se filtr (@id
) shoduje.
string sql = @"
SELECT
*
FROM customers c
WHERE c.id = @id
";
Vytvořte novou QueryDefinition
proměnnou s názvem query
předávající sql
řetězec jako jediný parametr dotazu. Použijte také metodu WithParameter
tekutiny k použití hodnoty proměnné id
na @id
parametr.
var query = new QueryDefinition(
query: sql
)
.WithParameter("@id", id);
GetItemQueryIterator<>
Použijte obecnou metodu a proměnnou k vytvoření iterátoruquery
, který získává data ze služby Azure Cosmos DB. Uložte iterátor do proměnné s názvem feed
. Zabalte tento celý výraz do příkazu using, aby se iterátor později vyřadil.
using var feed = container.GetItemQueryIterator<dynamic>(
queryDefinition: query
);
Asynchronní volání ReadNextAsync
metody feed
proměnné a uložení výsledku do proměnné s názvem response
.
var response = await feed.ReadNextAsync();
Napište do konzoly hodnoty proměnných response
StatusCode
a RequestCharge
vlastností. Zapište také hodnotu id
proměnné.
Console.WriteLine($"[{response.StatusCode}]\t{id}\t{response.RequestCharge} RUs");
Uložte soubor CosmosHandler.cs.
Zpátky v terminálu spusťte aplikaci, aby přečetla jednu položku pomocí dotazu SQL.
dotnet run -- --name 'Mica Pereira' --state 'Washington' --country 'United States'
Výstup příkazu by měl znamenat, že dotaz vyžadoval více jednotek žádostí (RU).
[OK] mica-pereira 2.82 RUs
Zpět v CosmosHandler.cs souboru odstraňte všechny řádky kódu z ManageCustomerAsync
metody znovu s výjimkou prvních dvou řádků.
public static async Task ManageCustomerAsync(string name, string email, string state, string country)
{
Container container = await GetContainerAsync();
string id = name.Kebaberize();
}
Pro další kroky přidejte tento kód do ManageCustomerAsync
metody.
Vytvořte novou instanci PartitionKeyBuilder
tak, že přidáte state
parametry country
jako hodnotu klíče oddílu s více částmi.
var partitionKey = new PartitionKeyBuilder()
.Add(country)
.Add(state)
.Build();
Pomocí metody kontejneru ReadItemAsync<>
nasměrujte na čtení položky z kontejneru pomocí id
proměnných.partitionKey
Uložte výsledek do proměnné s názvem response
.
var response = await container.ReadItemAsync<dynamic>(
id: id,
partitionKey: partitionKey
);
Napište do konzoly hodnoty proměnných response
StatusCode
a RequestCharge
vlastností. Zapište také hodnotu id
proměnné.
Console.WriteLine($"[{response.StatusCode}]\t{id}\t{response.RequestCharge} RU");
Uložte soubor CosmosHandler.cs znovu.
Zpátky v terminálu spusťte aplikaci ještě jednou a nasměrujte tak čtení jedné položky.
dotnet run -- --name 'Mica Pereira' --state 'Washington' --country 'United States'
Výstup příkazu by měl znamenat, že dotaz vyžadoval jednu RU.
[OK] mica-pereira 1 RUs
Nakonec vezmete položku, kterou jste vytvořili, přečtete ji a vytvoříte jinou související položku jako součást jedné transakce pomocí sady Azure SDK pro .NET.
Vraťte se do souboru CosmosHandler.cs nebo ho otevřete.
Odstraňte tyto řádky kódu z ManageCustomerAsync
metody.
var response = await container.ReadItemAsync<dynamic>(
id: id,
partitionKey: partitionKey
);
Console.WriteLine($"[{response.StatusCode}]\t{id}\t{response.RequestCharge} RUs");
Pro další kroky přidejte tento nový kód do ManageCustomerAsync
metody.
Pomocí parametrů a parametrů metody a country
proměnné vytvořte novou anonymní typovou položkuname
.id
state
Uložte položku jako proměnnou s názvem customerCart
. Tato položka představuje nákupní košík v reálném čase pro zákazníka, který je aktuálně prázdný.
var customerCart = new {
id = $"{Guid.NewGuid()}",
customerId = id,
items = new string[] {},
address = new {
state = state,
country = country
}
};
Pomocí parametrů a parametrů id
metody a country
proměnné vytvořte další novou anonymní typovou položkuname
. state
Uložte položku jako proměnnou s názvem customerCart
. Tato položka představuje expediční a kontaktní informace pro zákazníka.
var customerContactInfo = new {
id = $"{id}-contact",
customerId = id,
email = email,
location = $"{state}, {country}",
address = new {
state = state,
country = country
}
};
Vytvořte novou dávku pomocí metody kontejneru CreateTransactionalBatch
, která předává proměnnou partitionKey
. Uložte dávku do proměnné s názvem batch
. K provádění následujících akcí použijte fluentové metody:
metoda | Parametr |
---|---|
ReadItem |
id řetězcová proměnná |
CreateItem |
customerCart Proměnná anonymního typu |
CreateItem |
customerContactInfo Proměnná anonymního typu |
var batch = container.CreateTransactionalBatch(partitionKey)
.ReadItem(id)
.CreateItem(customerCart)
.CreateItem(customerContactInfo);
Ke spuštění transakce použijte metodu dávky ExecuteAsync
. Uložte výsledek do proměnné s názvem response
.
using var response = await batch.ExecuteAsync();
Napište do konzoly hodnoty proměnných response
StatusCode
a RequestCharge
vlastností. Zapište také hodnotu id
proměnné.
Console.WriteLine($"[{response.StatusCode}]\t{response.RequestCharge} RUs");
Uložte soubor CosmosHandler.cs znovu.
Zpátky v terminálu spusťte aplikaci ještě jednou a nasměrujte tak čtení jedné položky.
dotnet run -- --name 'Mica Pereira' --state 'Washington' --country 'United States'
Výstup příkazu by měl zobrazit jednotky žádostí použité pro celou transakci.
[OK] 16.05 RUs
Poznámka
Poplatek za vaši žádost se může lišit.
K zabalení dat použijete Průzkumník dat na webu Azure Portal k zobrazení dat a kontejneru, který jste vytvořili v tomto kurzu.
Na webu Azure Portal přejděte ke svému stávajícímu účtu API for NoSQL.
V nabídce prostředků vyberte Průzkumník dat.
Na stránce Průzkumník dat rozbalte cosmicworks
databázi a pak vyberte customers
kontejner.
Na panelu příkazů vyberte Nový dotaz SQL.
V editoru dotazů sledujte tento řetězec dotazu SQL.
SELECT * FROM c
Výběrem příkazu Spustit dotaz spusťte dotaz a prohlédněte si výsledky.
Výsledky by měly obsahovat pole JSON se třemi položkami vytvořenými v tomto kurzu. Všimněte si, že všechny položky mají stejnou hierarchickou hodnotu klíče oddílu, ale jedinečná pole ID. Ukázkový výstup je zkrácen pro stručnost.
[
{
"id": "mica-pereira",
"name": "Mica Pereira",
"address": {
"state": "Washington",
"country": "United States"
},
...
},
{
"id": "33d03318-6302-4559-b5c0-f3cc643b2f38",
"customerId": "mica-pereira",
"items": [],
"address": {
"state": "Washington",
"country": "United States"
},
...
},
{
"id": "mica-pereira-contact",
"customerId": "mica-pereira",
"email": null,
"location": "Washington, United States",
"address": {
"state": "Washington",
"country": "United States"
},
...
}
]
Pokud už databázi použitou v tomto kurzu nepotřebujete, odstraňte ji. Uděláte to tak, že přejdete na stránku účtu, vyberete Průzkumník dat, vyberete cosmicworks
databázi a pak vyberete Odstranit.
Události
Vytváření aplikací a agentů AI
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatŠkolení
Modul
Vyzkoušení služby Azure Cosmos DB pro NoSQL - Training
Vyzkoušení služby Azure Cosmos DB pro NoSQL
Certifikace
Microsoft Certified: Odborník pro vývojáře ve službě Azure Cosmos DB - Certifications
Vytvářejte efektivní dotazy, vytvářejte zásady indexování, spravujte a zřiďte prostředky v rozhraní SQL API a sadě SDK pomocí služby Microsoft Azure Cosmos DB.
Dokumentace
Rychlý start – Azure SDK pro .NET - Azure Cosmos DB for NoSQL
V tomto rychlém startu nasaďte webovou aplikaci .NET, která používá sadu Azure SDK pro .NET k interakci s daty Azure Cosmos DB for NoSQL.
Příklady pro sadu Azure Cosmos DB for NoSQL SDK pro .NET
Vyhledejte příklady sady .NET SDK na GitHubu pro běžné úlohy pomocí služby Azure Cosmos DB for NoSQL.
Začínáme se službou Azure Cosmos DB for NoSQL s využitím .NET
Začněte s vývojem aplikace .NET, která funguje se službou Azure Cosmos DB for NoSQL. Tento článek vám pomůže zjistit, jak nastavit projekt a nakonfigurovat přístup ke koncovému bodu Azure Cosmos DB for NoSQL.