Gyakorlat – API létrehozása NoSQL-fiókhoz és -erőforrásokhoz

Befejeződött

Most már létrehozhatja az Azure Cosmos DB-fiókban használt különböző erőforrásokat (például adatbázisokat, tárolókat és elemeket). Ebben a gyakorlatban egy adatbázist cosmicworks kell létrehoznia, amely egyetlen, nevesített tárolóval rendelkezik products. Győződjön meg arról, hogy a kód nem összeomlik, és megpróbál újra létrehozni egy tárolót, ha ezt a konzolalkalmazást többször futtatja.

Jelenleg néhány alapvető követelménye van:

  1. Adatbázis létrehozása, ha még nem létezik
  2. Tároló létrehozása, ha még nem létezik

Illustration of icons indicating Azure Cosmos DB resources are created in the cloud.

A gyakorlat elvégzése után a projekt létrehoz minden olyan adatbázist vagy tárolót, amely végrehajtásához szükség van rá.

-adatbázis létrehozása

Az SDK hasznos metódusokat tartalmaz, amelyek új erőforrást hoznak létre, ha még nem léteznek. Ezekkel a módszerekkel többször is futtathatja az alkalmazást anélkül, hogy az ütközések által kiváltott kivételek miatt kellene aggódnia. Itt létrehoz egy adatbázist.

  1. Térjen vissza a Program.cs fájlhoz.

  2. Hozzon létre vagy szerezzen be egy új adatbázist hívással CreateDatabaseIfNotExistsAsync(String, ThroughputProperties, RequestOptions, CancellationToken). Tárolja az eredményt egy névvel ellátott databaseváltozóban. Ügyeljen arra, hogy ezeket a paramétereket állítsa be:

    Paraméter Érték
    id cosmicworks
    Database database = await client.CreateDatabaseIfNotExistsAsync(
        id: "cosmicworks"
    );
    
  3. Adja meg az adatbázis egyedi azonosítójának kimenetét.

    Console.WriteLine($"[Database created]:\t{database.Id}");
    
  4. Mentse a Program.cs fájlt.

Tároló létrehozása

Itt létrehoz egy tárolót az adatbázis megosztott átviteli sebességének egy adott "szeletével".

  1. Hozzon létre egy tulajdonságobjektumot egy új tárolóhoz a ContainerProperties típus használatával. Tárolja az eredményt egy névvel ellátott propertiesváltozóban. Ügyeljen arra, hogy ezeket a paramétereket állítsa be:

    Paraméter Érték
    id products
    partitionKeyPath /categoryId
    ContainerProperties properties = new(
        id: "products",
        partitionKeyPath: "/categoryId"
    );
    
  2. Hozzon létre egy automatikus skálázási átviteli sebességet használó objektumot a CreateAutoscaleThroughput(Int32) statikus módszerrel. Tárolja az eredményt egy névvel ellátott throughputváltozóban. Ügyeljen arra, hogy ezeket a paramétereket állítsa be:

    Paraméter Érték
    automatikus skálázásMaxThroughput 1000
    var throughput = ThroughputProperties.CreateAutoscaleThroughput(
        autoscaleMaxThroughput: 1000
    );
    
  3. Hozzon létre vagy szerezzen be egy új tárolót hívással CreateContainerIfNotExistsAsync(String, String, Nullable<Int32>, RequestOptions, CancellationToken). Tárolja az eredményt egy névvel ellátott containerváltozóban. Ügyeljen arra, hogy ezeket a paramétereket állítsa be:

    Container container = await database.CreateContainerIfNotExistsAsync(
        containerProperties: properties,
        throughputProperties: throughput
    );
    
  4. Most adja ki a tároló egyedi azonosítójának értékét.

    Console.WriteLine($"[Container created]:\t{container.Id}");
    
  5. Mentse a Program.cs fájlt.

Rekordtípusok létrehozása elemekhez

A C#-adatok különböző típusúak, például osztályok, szerkezetek és rekordok használatával jeleníthetők meg. Ebben az SDK-ben a rekordok azért hasznosak, mert alapértelmezés szerint nem módosíthatók. Szükség esetén továbbra is hozzáadhat kódot egy rekord módosított másolatának létrehozásához. A rekordok könnyen olvasható szintaxissal is rendelkeznek, és gyorsan létrehozhatóak csak néhány sornyi kóddal. Ebben a szakaszban létrehoz egy alaptípust az összes elemhez és az egyes típusú elemekhez.

  1. A Visual Studio Code használatával hozzon létre egy Item.cs nevű új fájlt. Ezután nyissa meg a fájlt a szerkesztőben.

  2. Hozzon létre egy alaprekordtípust, Item amely a tároló összes elemében használni kívánt három tulajdonságot tartalmazza: id, categoryIdés type.

    public record Item(
        string Id,
        string CategoryId,
        string Type
    );
    
  3. Mentse az Item.cs fájlt. Zárja be az Item.cs fájlt.

  4. Hozzon létre egy másik, Category.cs nevű új fájlt. Nyissa meg ezt a fájlt a szerkesztőben.

  5. Hozzon létre egy kategória nevű új típust, amely az Elem típusától örököl. Győződjön meg arról, hogy a típus átadja az értékeit az alap implementációnak, és állítsa be a típusváltozót a Kategória típus nevének kimenetére.

    public record Category(
        string Id,
        string CategoryId
    ) : Item(
        Id,
        CategoryId,
        nameof(Category)
    );
    
  6. Mentse a Category.cs fájlt. Zárja be a Category.cs fájlt.

  7. Végül hozzon létre egy product.cs nevű utolsó fájlt. Nyissa meg a fájlt a szerkesztőben is.

  8. Hozzon létre egy Termék nevű új típust, amely az Elemtőlörököl, és hozzáad néhány új tulajdonságot: name, price, archivedés quantity.

    public record Product(
        string Id,
        string CategoryId
    ) : Item(
        Id,
        CategoryId,
        nameof(Product)
    )
    {
        public string Name { get; init; } = default!;
        public decimal Price { get; init; }
        public bool Archived { get; init; }
        public int Quantity { get; init; }
    };
    
  9. Mentse a Product.cs fájlt. Zárja be a Product.cs fájlt.

Ellenőrizze munkáját

Az alkalmazás most létrehoz egy adatbázist és egy tárolót. Az erőforrások létrehozásához használt módszerek elég rugalmasak ahhoz, hogy többször is futtathatók legyenek kivétel nélkül. Itt futtatja az alkalmazást, és ellenőrzi mindkét erőforrás egyedi azonosítóinak kimenetét.

  1. A .NET-alkalmazás futtatása a terminálon

    dotnet run
    
  2. Figyelje meg az alkalmazás futtatásának kimenetét. A kimenetnek egyeznie kell az alábbi példával:

    ...
    [Database created]:     cosmicworks
    [Container created]:    products