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


Rövid útmutató: Az Azure Cosmos DB for Table 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-table-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 Azure.Data.Tables 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 Azure.Data.Tables következővel dotnet add package: .

    dotnet add package Azure.Data.Tables
    
  3. Nyissa meg és tekintse át az src/web/Microsoft.Samples.Cosmos.Table.Quickstart.Web.csproj fájlt annak ellenőrzéséhez, hogy a Azure.Data.Tables bejegyzés létezik-e.

Objektummodell

Név Leírás
TableServiceClient Ez az osztály az elsődleges ügyfélosztály, és a fiókszintű metaadatok vagy adatbázisok kezelésére szolgál.
TableClient Ez az osztály a fiókon belüli tábla ügyfélét jelöli.

Kódpéldák

A sablonban lévő mintakód egy nevű táblát cosmicworks-productshasznál. A cosmicworks-products táblázat olyan részleteket tartalmaz, mint a név, a kategória, a mennyiség, az ár, az egyedi azonosító és az egyes termékek értékesítési jelzője. A tároló egy egyedi azonosítót használ sorkulcsként és kategóriaként partíciókulcsként.

Az ügyfél hitelesítése

Ez a minta létrehozza az osztály új példányát TableServiceClient .

DefaultAzureCredential credential = new();

TableServiceClient serviceClient = new(
    endpoint: new Uri("<azure-cosmos-db-table-account-endpoint>"),
    credential
);

Táblázat lekérése

Ez a minta az TableClient osztály egy példányát hozza létre az GetTableClient osztály metódusával TableServiceClient .

TableClient client = serviceClient.GetTableClient(
    tableName: "<azure-cosmos-db-table-name>"
);

Entitás létrehozása

Az új entitások táblabeli létrehozásának legegyszerűbb módja egy olyan osztály létrehozása, amely megvalósítja a ITableEntity felületet. Ezután hozzáadhatja saját tulajdonságait az osztályhoz az adott táblasor adatoszlopainak feltöltéséhez.

public record Product : ITableEntity
{
    public required string RowKey { get; set; }

    public required string PartitionKey { get; set; }

    public required string Name { get; set; }

    public required int Quantity { get; set; }

    public required decimal Price { get; set; }

    public required bool Clearance { get; set; }

    public ETag ETag { get; set; } = ETag.All;

    public DateTimeOffset? Timestamp { get; set; }
};

Hozzon létre egy entitást a táblában az Product osztály meghívásával TableClient.AddEntityAsync<T>.

Product entity = new()
{
    RowKey = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    PartitionKey = "gear-surf-surfboards",
    Name = "Surfboard",
    Quantity = 10,
    Price = 300.00m,
    Clearance = true
};

Response response = await client.UpsertEntityAsync<Product>(
    entity: entity,
    mode: TableUpdateMode.Replace
);

Entitás lekérése

A metódussal lekérhet egy adott entitást egy TableClient.GetEntityAsync<T> táblából. Adja meg a partitionKey megfelelő sort a megfelelő sor azonosításához, és rowKey adja meg a paramétereket az entitás gyors pontolvasásához .

Response<Product> response = await client.GetEntityAsync<Product>(
    rowKey: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    partitionKey: "gear-surf-surfboards"
);

Entitások lekérdezése

Miután beszúrt egy entitást, lekérdezést is futtathat az adott szűrőnek megfelelő összes entitás lekéréséhez a TableClient.Query<T> metódus használatával. Ez a példa kategóriánként szűri a termékeket a Language Integrated Query (LINQ) szintaxissal, ami az olyan beírt ITableEntity modellek használatának előnye, mint az Product osztály.

string category = "gear-surf-surfboards";

AsyncPageable<Product> results = client.QueryAsync<Product>(
    product => product.PartitionKey == category
);

Elemezheti a lekérdezés lapszámozott eredményeit úgy, hogy aszinkron hurkot használva végighalad az eredmények minden oldalán.

List<Product> entities = new();
await foreach (Product product in results)
{
    entities.Add(product);
}

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