Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kom igång med Azure Cosmos DB för Apache Cassandra-klientbiblioteket för .NET för att lagra, hantera och fråga ostrukturerade data. Följ stegen i den här guiden för att skapa ett nytt konto, installera ett .NET-klientbibliotek, ansluta till kontot, utföra vanliga åtgärder och köra frågor mot dina slutliga exempeldata.
API-referensdokumentation | Bibliotekets källkod | Paket (NuGet)
Förutsättningar
- En prenumeration på Azure - Om du inte har en Azure-prenumeration, skapa ett gratis konto innan du börjar.
 
- Den senaste versionen av Azure CLI i Azure Cloud Shell. - Om du föredrar att köra CLI-referenskommandon lokalt loggar du in på Azure CLI med hjälp az loginav kommandot .
 
- Om du föredrar att köra CLI-referenskommandon lokalt loggar du in på Azure CLI med hjälp 
- .NET SDK 9.0 eller senare
Förbereda
Konfigurera först konto- och utvecklingsmiljön för den här guiden. Det här avsnittet beskriver hur du skapar ett konto, hämtar dess autentiseringsuppgifter och sedan förbereder utvecklingsmiljön.
Skapa ett konto
Börja med att skapa ett API för Apache Cassandra-konto. När kontot har skapats skapar du nyckelområdet och tabellresurserna.
- Om du inte redan har en målresursgrupp använder du - az group createkommandot för att skapa en ny resursgrupp i din prenumeration.- az group create \ --name "<resource-group-name>" \ --location "<location>"
- az cosmosdb createAnvänd kommandot för att skapa ett nytt Azure Cosmos DB för Apache Cassandra-konto med standardinställningar.- az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"
- Skapa ett nytt keyspace med - az cosmosdb cassandra keyspace createnamnet- cosmicworks.- az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"
- Skapa ett nytt JSON-objekt som representerar schemat med hjälp av ett Bash-kommando med flera rader. - az cosmosdb cassandra table createAnvänd sedan kommandot för att skapa en ny tabell med namnet- products.- schemaJson=$(cat <<EOF { "columns": [ { "name": "id", "type": "text" }, { "name": "name", "type": "text" }, { "name": "category", "type": "text" }, { "name": "quantity", "type": "int" }, { "name": "price", "type": "decimal" }, { "name": "clearance", "type": "boolean" } ], "partitionKeys": [ { "name": "id" } ] } EOF )- az cosmosdb cassandra table create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --keyspace-name "cosmicworks" \ --name "product" \ --schema "$schemaJson"
Hämta autentiseringsuppgifter
Hämta nu lösenordet för klientbiblioteket som ska användas för att skapa en anslutning till det nyligen skapade kontot.
- Använd - az cosmosdb showför att hämta kontaktpunkten och användarnamnet för kontot.- az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"
- Registrera värdet för - contactPointegenskaperna och- usernamefrån föregående kommandons utdata. Dessa egenskapers värden är kontaktpunkten och användarnamnet som du använder senare i den här guiden för att ansluta till kontot med biblioteket.
- Använd - az cosmosdb keys listför att hämta nycklarna för kontot.- az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"
- Registrera värdet för - primaryMasterKeyegenskapen från föregående kommandons utdata. Den här egenskapens värde är det lösenord som du använder senare i den här guiden för att ansluta till kontot med biblioteket.
Förbereda utvecklingsmiljön
Konfigurera sedan utvecklingsmiljön med ett nytt projekt och klientbiblioteket. Det här steget är det sista nödvändiga kravet innan du går vidare till resten av den här guiden.
- Börja i en tom katalog. 
- Skapa ett nytt .NET-konsolprogram - dotnet new console
- CassandraCSharpDriverLägg till paketet från NuGet.- dotnet add package CassandraCSharpDriver
- Skapa projektet. - dotnet build
Objektmodell
| Beskrivning | |
|---|---|
| Cluster | Representerar anslutningstillståndet till ett kluster | 
| ISession | Trådsäkra entiteter som har en specifik anslutning till ett kluster | 
| Mapper | Cassandra Query Language-klienten (CQL) som används för att köra frågor | 
Kodexempel
Autentisera klient
Börja med att autentisera klienten med de autentiseringsuppgifter som samlats in tidigare i den här guiden.
- Öppna filen Program.cs i din integrerade utvecklingsmiljö (IDE). 
- Ta bort befintligt innehåll i filen. 
- Lägg till med hjälp av direktiv för följande namnområden: - System.Security.Authentication
- Cassandra
- Cassandra.Mapping
 - using System.Security.Authentication; using Cassandra; using Cassandra.Mapping;
- Skapa konstanta strängvariabler för de autentiseringsuppgifter som samlats in tidigare i den här guiden. Ge variablerna - username,- passwordoch- contactPointnamn.- const string username = "<username>"; const string password = "<password>"; const string contactPoint = "<contact-point>";
- Skapa ett nytt - SSLoptionsobjekt för att säkerställa att du använder TLS-protokollet (Transport Layer Security) 1.2, kontrollerar om certifikatet återkallas och inte utför någon extra certifieringsverifiering på klientsidan.- SSLOptions sslOptions = new( sslProtocol: SslProtocols.Tls12, checkCertificateRevocation: true, remoteCertValidationCallback: (_, _, _, _) => true);
- Konstruera ett nytt - Clusterobjekt med hjälp av fluent-syntaxen- Cluster.Builder(). Använd de autentiserings- och konfigurationsvariabler som skapades i föregående steg.- Cluster cluster = Cluster.Builder() .WithCredentials(username, password) .WithPort(10350) .AddContactPoint(contactPoint) .WithSSL(sslOptions) .Build();
- Skapa en ny - sessionvariabel med hjälp av metoden- ConnectAsyncsom skickar in namnet på målnyckelområdet (- cosmicworks).- using ISession session = await cluster.ConnectAsync("cosmicworks");
- Skapa en ny - mappervariabel med hjälp- Mapperav klasskonstruktorn som skickar in den nyligen skapade- sessionvariabeln.- Mapper mapper = new(session);
Varning
Fullständig TLS-validering (Transport Layer Security) är inaktiverad i den här guiden för att förenkla autentiseringen. Aktivera validering fullt ut för produktionsdistributioner.
Infoga eller uppdatera data
Därefter ökar du nya data till en tabell. Upserting säkerställer att data skapas eller ersätts på lämpligt sätt beroende på om samma data redan finns i tabellen.
- Definiera en ny posttyp med namnet - Productmed fält som motsvarar de fält i tabellen som skapades tidigare i den här guiden.- Typ - Id- string- Name- string- Category- string- Quantity- int- Price- decimal- Clearance- bool- record Product { public required string Id { get; init; } public required string Name { get; init; } public required string Category { get; init; } public required int Quantity { get; init; } public required decimal Price { get; init; } public required bool Clearance { get; init; } }- Tips/Råd - I .NET kan du skapa den här typen i en annan fil eller skapa den i slutet av den befintliga filen. 
- Skapa ett nytt objekt av typen - Product. Lagra objektet i en variabel med namnet- product.- Product product = new() { Id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", Name = "Yamba Surfboard", Category = "gear-surf-surfboards", Quantity = 12, Price = 850.00m, Clearance = false };
- Anropa asynkront metoden - InsertAsyncsom skickar variabeln- productsom skapades i föregående steg.- await mapper.InsertAsync(product);
Läs data
Läs sedan data som tidigare har laddats upp i tabellen.
- Skapa en ny strängvariabel med namnet - readQuerymed en CQL-fråga som matchar objekt med samma- idfält.- string readQuery = "SELECT * FROM product WHERE id = ? LIMIT 1";
- Skapa en strängvariabel - idmed namnet med samma värde som den produkt som skapades tidigare i den här guiden.- string id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";
- Använd den - SingleAsync<>generiska metoden för att köra frågan som lagras i- readQuery, skicka in variabeln- idsom ett argument och mappa utdata till- Producttypen. Lagra resultatet av den här åtgärden i en variabel av typen- Product.- Product matchedProduct = await mapper.SingleAsync<Product>(readQuery, [id]);
Fråga efter data
Slutligen använder du en fråga för att hitta alla data som matchar ett specifikt filter i tabellen.
- Skapa strängvariabler med namnet - findQueryoch- categorymed CQL-frågan och den obligatoriska parametern.- string findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING"; string category = "gear-surf-surfboards";
- Använd de två strängvariablerna och den - FetchAsync<>generiska metoden för att asynkront fråga efter flera resultat. Lagra resultatet av den här frågan i en variabel av typen- IEnumerable<Product>med namnet- queriedProducts.- IEnumerable<Product> queriedProducts = await mapper.FetchAsync<Product>(findQuery, [category]);
- Använd en - foreachloop för att iterera över frågeresultaten.- foreach (Product queriedProduct in queriedProducts) { // Do something here with each result }
Kör koden
Kör det nyligen skapade programmet med hjälp av en terminal i programkatalogen.
dotnet run
Rensa resurser
När du inte längre behöver kontot tar du bort kontot från din Azure-prenumeration genom att ta bort resursen.
az cosmosdb delete \
    --resource-group "<resource-group-name>" \
    --name "<account-name>"