Megosztás a következőn keresztül:


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.

  1. Nyisson meg egy terminált egy üres könyvtárban.

  2. 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
    
  3. A projekt inicializálására használható azd init .

    azd init --template cosmos-db-nosql-dotnet-quickstart
    
  4. Az inicializálás során konfiguráljon egy egyedi környezetnevet.

  5. 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
    
  6. 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.

  7. 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.
    
  8. A konzol URL-címével keresse meg a webalkalmazást a böngészőben. Figyelje meg a futó alkalmazás kimenetét.

Képernyőkép a futó webalkalmazásról.

Telepítse az ügyfélkódtárat

Az ügyfélkódtár csomagként Microsoft.Azure.Cosmos a NuGeten keresztül érhető el.

  1. Nyisson meg egy terminált, és keresse meg a /src/web mappát.

    cd ./src/web
    
  2. Ha még nincs telepítve, telepítse a csomagot a Microsoft.Azure.Cosmos következővel dotnet add package: .

    dotnet add package Microsoft.Azure.Cosmos --version 3.*
    
  3. Emellett telepítse a Azure.Identity csomagot, ha még nincs telepítve.

    dotnet add package Azure.Identity --version 1.12.*
    
  4. 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 a Microsoft.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

A sablon mintakódja egy névvel ellátott cosmicworks adatbázist és egy nevű tárolót productshaszná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 cosmicworksadatbá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