Rövid útmutató: Az Azure Cosmos DB for NoSQL használata a .NET-hez készült Azure SDK-val
Ebben a rövid útmutatóban üzembe helyez egy alapszintű Azure Cosmos DB for Table alkalmazást a .NET-hez készült Azure SDK használatával. Az Azure Cosmos DB for Table egy séma nélküli adattár, amely lehetővé teszi, hogy az alkalmazások strukturált táblaadatokat tároljanak a felhőben. Megtudhatja, hogyan hozhat létre táblákat, sorokat, és hogyan hajthat végre alapvető feladatokat az Azure Cosmos DB-erőforrásban az Azure SDK for .NET használatával.
API-referenciadokumentáció Kódtár forráskódcsomagja | (NuGet) | Azure Developer CLI |
Előfeltételek
- Azure Developer CLI
- Docker Desktop
- .NET 9.0
Ha még nem rendelkezik Azure-fiókkal, első lépésként hozzon létre egy ingyenes fiókot.
A projekt inicializálása
Az Azure Developer CLI (azd
) használatával hozzon létre egy Azure Cosmos DB for Table-fiókot, és helyezzen üzembe egy tárolóalapú mintaalkalmazást. A mintaalkalmazás az ügyfélkódtárat használja a mintaadatok kezelésére, létrehozására, olvasására és lekérdezésére.
Nyisson meg egy terminált egy üres könyvtárban.
Ha még nincs hitelesítve, jelentkezzen be az Azure Developer CLI-be a használatával
azd auth login
. Kövesse az eszköz által megadott lépéseket a parancssori felületre való hitelesítéshez az ön által előnyben részesített Azure-hitelesítő adatokkal.azd auth login
A projekt inicializálására használható
azd init
.azd init --template cosmos-db-nosql-dotnet-quickstart
Az inicializálás során konfiguráljon egy egyedi környezetnevet.
Az Azure Cosmos DB-fiók üzembe helyezése a következő használatával
azd up
: . A Bicep-sablonok egy minta webalkalmazást is üzembe helyeznek.azd up
A kiépítési folyamat során válassza ki az előfizetést, a kívánt helyet és a célerőforrás-csoportot. Várja meg, amíg a kiépítési folyamat befejeződik. A folyamat körülbelül öt percet vehet igénybe.
Az Azure-erőforrások kiépítése után a kimenet tartalmazza a futó webalkalmazás URL-címét.
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io> SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
A konzol URL-címével keresse meg a webalkalmazást a böngészőben. Figyelje meg a futó alkalmazás kimenetét.
Telepítse az ügyfélkódtárat
Az ügyfélkódtár csomagként Microsoft.Azure.Cosmos
a NuGeten keresztül érhető el.
Nyisson meg egy terminált, és keresse meg a
/src/web
mappát.cd ./src/web
Ha még nincs telepítve, telepítse a csomagot a
Microsoft.Azure.Cosmos
következőveldotnet add package
: .dotnet add package Microsoft.Azure.Cosmos --version 3.*
Emellett telepítse a
Azure.Identity
csomagot, ha még nincs telepítve.dotnet add package Azure.Identity --version 1.12.*
Nyissa meg és tekintse át az src/web/Cosmos.Samples.NoSQL.Quickstart.Web.csproj fájlt annak ellenőrzéséhez, hogy a bejegyzések és
Azure.Identity
aMicrosoft.Azure.Cosmos
bejegyzések is léteznek-e.
Objektummodell
Név | Leírás |
---|---|
CosmosClient | Ez az osztály az elsődleges ügyfélosztály, és a fiókszintű metaadatok vagy adatbázisok kezelésére szolgál. |
Database | Ez az osztály egy adatbázist jelöl a fiókon belül. |
Container | Ez az osztály elsősorban olvasási, frissítési és törlési műveletek végrehajtására szolgál a tárolón vagy a tárolóban tárolt elemeken. |
PartitionKey | Ez az osztály egy logikai partíciókulcsot jelöl. Ez az osztály számos gyakori művelethez és lekérdezéshez szükséges. |
Kódpéldák
- Az ügyfél hitelesítése
- Adatbázis lekérése
- Tároló lekérése
- Elem létrehozása
- Elem lekérése
- Lekérdezési elemek
A sablon mintakódja egy névvel ellátott cosmicworks
adatbázist és egy nevű tárolót products
használ. A products
tároló olyan részleteket tartalmaz, mint a név, a kategória, a mennyiség, az egyedi azonosító és az egyes termékekhez tartozó értékesítési jelző. A tároló a tulajdonságot /category
logikai partíciókulcsként használja.
Az ügyfél hitelesítése
Ez a minta létrehoz egy új osztálypéldányt, CosmosClient
és egy DefaultAzureCredential
példány használatával hitelesít.
DefaultAzureCredential credential = new();
CosmosClient client = new(
accountEndpoint: "<azure-cosmos-db-nosql-account-endpoint>",
tokenCredential: new DefaultAzureCredential()
);
Adatbázis lekérése
A meglévő, elnevezett cosmicworks
adatbázis lekérésére használhatóclient.GetDatabase
.
Database database = client.GetDatabase("cosmicworks");
Tároló lekérése
A meglévő products
tároló lekérése a következővel database.GetContainer
: .
Container container = database.GetContainer("products");
Elem létrehozása
Hozzon létre egy C#-rekordtípust a JSON-ba szerializálni kívánt összes taggal. Ebben a példában a típus egyedi azonosítóval rendelkezik, és a kategória, a név, a mennyiség, az ár és az értékesítés mezői.
public record Product(
string id,
string category,
string name,
int quantity,
decimal price,
bool clearance
);
Hozzon létre egy elemet a tárolóban a következő használatával container.UpsertItem
: . Ez a metódus "upserts" az elemet hatékonyan cserélje le, ha már létezik.
Product item = new(
id: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
category: "gear-surf-surfboards",
name: "Yamba Surfboard",
quantity: 12,
price: 850.00m,
clearance: false
);
ItemResponse<Product> response = await container.UpsertItemAsync<Product>(
item: item,
partitionKey: new PartitionKey("gear-surf-surfboards")
);
Elem olvasása
Pontolvasási műveletet hajt végre az egyedi azonosító (id
) és a partíciókulcs mezőinek használatával. Az adott elem hatékony lekérésére használható container.ReadItem
.
ItemResponse<Product> response = await container.ReadItemAsync<Product>(
id: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
partitionKey: new PartitionKey("gear-surf-surfboards")
);
Lekérdezési elemek
Lekérdezés végrehajtása egy tároló több eleme felett a következő használatával container.GetItemQueryIterator
: . Egy adott kategórián belüli összes elem megkeresése ezzel a paraméteres lekérdezéssel:
SELECT * FROM products p WHERE p.category = @category
string query = "SELECT * FROM products p WHERE p.category = @category"
var query = new QueryDefinition(query)
.WithParameter("@category", "gear-surf-surfboards");
using FeedIterator<Product> feed = container.GetItemQueryIterator<Product>(
queryDefinition: query
);
Elemezheti a lekérdezés lapszámozott eredményeit úgy, hogy végighalad az egyes találati oldalakon a használatával feed.ReadNextAsync
. Annak megállapítására szolgál feed.HasMoreResults
, hogy vannak-e eredmények az egyes ciklusok elején.
List<Product> items = new();
while (feed.HasMoreResults)
{
FeedResponse<Product> response = await feed.ReadNextAsync();
foreach (Product item in response)
{
items.Add(item);
}
}
Az erőforrások eltávolítása
Ha már nincs szüksége a mintaalkalmazásra vagy erőforrásokra, távolítsa el a megfelelő üzembe helyezést és az összes erőforrást.
azd down