Lab 04: Erstellen einer mehrsprachigen Datenlösung
Microsoft Azure-Benutzeroberfläche
Aufgrund der dynamischen Natur der Microsoft-Cloudtools kann es vorkommen, dass sich die Azure-Benutzeroberfläche nach der Entwicklung dieses Trainingsinhalts ändert. Daher sind die Lab-Anweisungen und Lab-Schritte möglicherweise nicht mehr zutreffend.
Microsoft aktualisiert diesen Trainingskurs, wenn die Community uns über die erforderlichen Änderungen informiert. Cloudupdates kommen jedoch häufig vor, sodass möglicherweise Änderungen an der Benutzeroberfläche auftreten, bevor diese Trainingsinhalte aktualisiert werden. Wenn dies der Fall ist, stellen Sie sich auf die Veränderungen ein, und arbeiten Sie sie bei Bedarf in den Labs durch.
Anweisungen
Vorbereitung
Anmelden bei der Laborumgebung
Melden Sie sich mithilfe der folgenden Anmeldeinformationen bei Ihrer Windows 11-VM an:
- Benutzername:
Admin
- Kennwort:
Pa55w.rd
Hinweis: Ihr Kursleiter stellt Anweisungen zum Herstellen einer Verbindung mit der virtuellen Laborumgebung zur Verfügung.
Überprüfen der installierten Anwendungen
Suchen Sie auf Ihrem Windows 11-Desktop nach der Taskleiste. Die Taskleiste enthält die Symbole für die Anwendungen, die Sie in diesem Lab verwenden, darunter:
- Microsoft Edge
- Datei-Explorer
- Visual Studio Code
Übungsszenario
In diesem Lab erstellen Sie eine Azure Cosmos DB-Ressource und eine Speicherkontoressource. Mit C# und .NET greifen Sie auf die Cosmos DB-Ressource zu und laden Daten in sie hoch.
Da Contoso möglicherweise über eine benutzerfreundliche Oberfläche auf die Daten in Cosmos DB zugreifen möchte, implementieren Sie außerdem eine .NET-Lösung, die auf die Daten aus Cosmos DB über einen Webbrowser zugreift und diese anzeigt.
Architekturdiagramm
Übung 1: Erstellen von Datenspeicherressourcen in Azure
Aufgabe 1: Öffnen des Azure-Portals
-
Wählen Sie auf der Taskleiste das Symbol Microsoft Edge aus.
-
Navigieren Sie im geöffneten Browserfenster zum Azure-Portal unter
https://portal.azure.com
, und melden Sie sich dann mit dem Konto an, das Sie für dieses Lab verwenden werden.Hinweis: Wenn Sie sich zum ersten Mal am Azure-Portal anmelden, wird Ihnen eine Tour durch das Portal angeboten. Wählen Sie Erste Schritte aus, um die Tour zu überspringen und mit der Verwendung des Portals zu beginnen.
Aufgabe 2: Erstellen einer Azure Cosmos DB-Kontoressource
-
Verwenden Sie im Azure-Portal das Textfeld Ressourcen, Dienste und Dokumente durchsuchen, um nach Azure Cosmos DB zu suchen. Wählen Sie in der Ergebnisliste dann Azure Cosmos DB aus.
-
Wählen Sie auf dem Blatt Azure Cosmos DB die Option + Erstellen aus.
-
Wählen Sie auf dem Blatt Azure Cosmos DB-Konto erstellen im Feld Azure Cosmos DB for NoSQL Erstellen aus.
-
Konfigurieren Sie auf der Registerkarte Grundlagen der Seite Azure Cosmos DB-Konto erstellen – Azure Cosmos DB for NoSQL die folgenden Aktionen aus, und wählen Sie dann Überprüfen + Erstellen aus:
Einstellung Aktion Abonnementliste Behalten Sie die Standardwerte bei. Abschnitt Ressourcengruppe Wählen Sie Neu erstellen aus. Textfeld Name Geben Sie Polyglotdata ein, und wählen Sie OK aus. Textfeld AccountName Geben Sie polycosmos [Ihr Name] ein. Dropdownliste Standort Wählen Sie eine Azure-Region aus, die dem Standort Ihres Labcomputers am nächsten liegt und in der Sie ein Cosmos DB-Konto erstellen können. Abschnitt Kapazitätsmodus Wählen Sie Serverlos aus. Der folgende Screenshot zeigt die konfigurierten Einstellungen auf der Seite Azure Cosmos DB-Konto erstellen - Azure Cosmos DB for NoSQL.
-
Überprüfen Sie auf der Registerkarte Überprüfen + Erstellen auf der Seite Azure Cosmos DB-Konto erstellen – Azure Cosmos DB for NoSQL die Optionen, die Sie in den vorherigen Schritten ausgewählt haben.
-
Wählen Sie Erstellen aus, um das Azure Cosmos DB-Konto mithilfe Ihrer angegebenen Konfiguration zu erstellen.
Hinweis: Warten Sie, bis der Erstellungstask abgeschlossen ist, bevor Sie mit diesem Lab fortfahren.
-
Wählen Sie Zu Ressource wechseln aus.
-
Suchen Sie auf dem Blatt Azure Cosmos DB-Konto nach dem Abschnitt Einstellungen, und wählen Sie dann den Link Schlüssel aus.
-
Notieren Sie sich aus dem Bereich Schlüssel auf der Registerkarte Schlüssel mit Lese-/Schreibzugriff die Werte der Textfelder URI, PRIMARY KEY und PRIMARY CONNECTION STRING im Editor. Sie verwenden diese Werte später in diesem Lab.
Hinweis: Um den Primärschlüssel und die Primäre Verbindungszeichenfolge in die Zwischenablage kopieren zu können, müssen Sie das Augensymbol verwenden.
Aufgabe 3: Erstellen einer Azure-Speicherkontoressource
-
Verwenden Sie im Azure-Portal das Textfeld Ressourcen, Dienste und Dokumente durchsuchen, um nach Speicherkonten zu suchen, und wählen Sie in der Ergebnisliste Speicherkonten aus.
-
Klicken Sie auf dem Blatt Speicherkonten auf + Erstellen.
-
Führen Sie auf der Registerkarte Grundlagen des Blatts Speicherkonto erstellen die folgenden Aktionen aus, und wählen Sie dann Überprüfen aus:
Einstellung Aktion Abonnementliste Behalten Sie die Standardwerte bei. Abschnitt Ressourcengruppe Wählen Sie PolyglotData aus. Textfeld Speicherkontoname Geben Sie polystor [Ihr Name] ein. Dropdownliste Region Wählen Sie dieselbe Region aus, in der Sie zuvor in dieser Übung das Cosmos DB-Konto erstellt haben. Abschnitt Leistung Wählen Sie Standard aus. Dropdownliste Redundanz Wählen Sie Lokal redundanter Speicher (LRS) aus. Der folgende Screenshot zeigt die konfigurierten Einstellungen auf dem Blatt Speicherkonto erstellen.
-
Überprüfen Sie auf der Registerkarte Überprüfen des Blatts Speicherkonto erstellen die Optionen, die Sie in den vorherigen Schritten ausgewählt haben.
-
Wählen Sie Erstellen aus, um das Speicherkonto mithilfe Ihrer angegebenen Konfiguration zu erstellen.
Hinweis: Warten Sie, bis der Erstellungstask abgeschlossen ist, bevor Sie mit diesem Lab fortfahren.
Überprüfung
In dieser Übung haben Sie die Azure-Ressourcen erstellt, die Sie für die mehrsprachige Datenlösung benötigen, die Sie in diesem Lab implementieren. Die von Ihnen erstellten Azure-Ressourcen umfassen ein Azure Cosmos DB-Konto und ein Azure Storage-Konto.
Übung 2: Überprüfen und Hochladen von Daten
Aufgabe 1:Hochladen von Bildern in Azure Blob Storage
-
Navigieren Sie im Navigationsbereich des Azure-Portals zurück zum Blatt Speicherkonten, und wählen Sie dann das Speicherkonto polystor [Ihr Name] aus, das Sie in der vorherigen Übung dieses Labs erstellt haben.
-
Wählen Sie auf dem Blatt polystor [Ihr Name] des Speicherkontos im Abschnitt Datenspeicherung den Link Container aus.
-
Wählen Sie im Abschnitt Container die Option + Container aus.
-
Führen Sie im Popupfenster Neuer Container die folgenden Aktionen aus, und wählen Sie dann Erstellen aus:
Einstellung Aktion Textfeld Name Geben Sie images ein. -
Wählen Sie im Abschnitt Container den neu erstellten Container images aus.
-
Suchen Sie nach dem Abschnitt Einstellungen auf dem Blatt Container, und wählen Sie dann den Link Eigenschaften aus.
-
Notieren Sie sich aus dem Bereich Eigenschaften den Wert im Textfeld URL im Editor. Sie verwenden diesen Wert später in diesem Lab.
-
Klicken Sie als Nächstes auf Freigegebene Zugriffstoken, und generieren Sie ein Zugriffstoken mit den Standardeinstellungen, indem Sie auf SAS-Token und URL generieren klicken. Notieren Sie den Wert des Blob SAS-Tokens im Editor. Sie benötigen ihn später.
Hinweis: Sie sollten jetzt fünf Werte im Editor haben. Die Werte für den URI, den Primären Schlüssel und die Primäre Verbindungszeichenfolge für Ihr Cosmos DB-Konto. Außerdem die URL und das SAS-Token- für Ihren Blob-Container.
- Suchen Sie auf dem Blatt nach dem Link Übersicht, und wählen Sie diesen aus.
-
Wählen Sie auf dem Blatt Hochladen aus.
-
Führen Sie im Popupfenster Blob hochladen die folgenden Aktionen aus:
a. Wählen Sie im Abschnitt Dateien die Option Nach Dateien suchen aus, oder verwenden Sie die Funktion zum Ziehen und Ablegen.
b. Navigieren Sie im Fenster Datei-Explorer zu Allfiles (F):\Allfiles\Labs\04\Starter\Images,wählen Sie alle 42 einzelnen JPG-Bilddateien aus, und wählen Sie dann Öffnen aus.
c. Stellen Sie sicher, dass Überschreiben, wenn Dateien bereits vorhanden sind ausgewählt ist, und wählen Sie dann Hochladen aus.
Hinweis: Warten Sie, bis alle Blobs hochgeladen wurden, bevor Sie mit diesem Lab fortfahren.
Aufgabe 2: Überprüfen der JSON-Daten
-
Starten Sie auf dem Lab-Computer Visual Studio Code.
-
Wählen Sie im Menü Datei die Option Datei öffnen aus, navigieren Sie zu Allfiles (F):\Allfiles\Labs \04\Starter\AdventureWorks\AdventureWorks.Upload, wählen Sie models.json aus, und wählen Sie dann Öffnen aus.
-
Überprüfen Sie das Format der Datei models.json, und beachten Sie, dass sie ein Array von JSON-Objekten mit einem geschachtelten Array von Objekten enthält, die Teil der Products-Eigenschaft sind.
Hinweis: Dadurch werden die Klassen bestimmt, die Sie definieren, um den Inhalt der JSON-Datei zu deserialisieren, bevor sie in eine Cosmos DB-Sammlung hochgeladen wird.
-
Beachten Sie in der Datei models.json dass eine der Eigenschaften Category heißt.
Hinweis: Sie verwenden die Category-Eigenschaft, um die Partitionierung der Cosmos DB-Zielsammlung zu definieren.
-
Schließen Sie Visual Studio Code.
Aufgabe 3: Erstellen einer Cosmos DB-Datenbank und -Sammlung und Ausführen eines JSON-Datenuploads
-
Wählen Sie auf dem Startbildschirm die Kachel Visual Studio Code aus.
-
Wählen Sie im Menü Datei die Option Ordner öffnen aus.
-
Suchen Sie im Fenster Datei-Explorer, das geöffnet wird, nach Allfiles (F):\Allfiles\Labs\04\Starter\AdventureWorks, und wählen Sie dann Ordner auswählen aus.
-
Wählen Sie im Fenster Visual Studio Code auf der Menüleiste Terminal und dann Neues Terminal aus.
-
Überprüfen Sie im Terminal, ob das aktuelle Verzeichnis auf AdventureWorks festgelegt ist (ändern Sie es in dieses Verzeichnis, falls dies nicht der Fall ist), und führen Sie dann den folgenden Befehl aus, um den Terminalkontext in den Ordner AdventureWorks.Upload umzuschalten:
cd .\AdventureWorks.Upload\
Hinweis: Öffnen Sie vor dem nächsten Schritt den Windows-Explorer, und entfernen Sie das schreibgeschützte Attribut aus der Datei Allfiles (F):\Allfiles\Labs\04\Starter\AdventureWorks\AdventureWorks.Upload\AdventureWorks.Upload.csproj.
-
Führen Sie an der Terminaleingabeaufforderung den folgenden Befehl aus, um dem aktuell geöffneten Projekt die .NET-Clientbibliothek von Azure Cosmos DB hinzuzufügen:
Hinweis: Bevor Sie mit dem folgenden Befehl fortfahren, stellen Sie sicher, dass Sie derzeit unter diesem Pfad positioniert sind: (F):\Allfiles\Labs\04\Starter\AdventureWorks\AdventureWorks.Upload\
dotnet add package Microsoft.Azure.Cosmos --version 3.28.0
Hinweis: Mit dem Befehl dotnet add package wird das Paket Microsoft.Azure.Cosmos aus NuGet hinzugefügt. Weitere Informationen finden Sie unter Microsoft.Azure.Cosmos.
-
Beobachten Sie die Ergebnisse des Builds, die im Terminal ausgegeben werden. Der Build sollte ohne Fehler oder Warnmeldungen erfolgreich abgeschlossen werden.
-
Erweitern Sie im Bereich Explorer des Visual Studio Code-Fensters das Projekt AdventureWorks.Upload.
-
Öffnen Sie die Datei Program.cs.
-
Überprüfen Sie in der Datei Program.cs die using-Direktiven, und beachten Sie, dass sie Microsoft.Azure.Cosmos, System.IO; , System.Text.Json, System.Threading.Tasks und System.Collections.Generic enthalten. Dies ermöglicht das asynchrone Hochladen von JSON-Elementen aus einer lokalen Datei auf Ihrem Lab-Computer in eine Sammlung in einer Cosmos DB-Datenbank.
-
Legen Sie in der Datei Program.cs in Zeile 14 den Wert für EndpointUrl fest, indem Sie die leere Zeichenfolge durch die zuvor in diesem Lab notierte Eigenschaft URI des Cosmos DB-Kontos ersetzen. Stellen Sie sicher, dass der Wert in doppelte Anführungszeichen eingeschlossen wird. Dies ist der erste Wert, den Sie im Editor aufgezeichnet haben.
-
Legen Sie in Zeile 15 den Wert von AuthorizationKey fest, indem Sie die leere Zeichenfolge durch die zuvor in diesem Lab notierte Eigenschaft PRIMARY KEY des Cosmos DB-Kontos ersetzen. Stellen Sie sicher, dass der Wert in doppelte Anführungszeichen eingeschlossen wird. Dies ist der zweite Wert, den Sie im Editor aufgezeichnet haben.
-
Legen Sie in Zeile 18 den Wert von PartitionKey fest, indem Sie die leere Zeichenfolge durch “/Category” ersetzen.
-
Legen Sie in Zeile 19 den Wert von JsonFilePath fest, indem Sie die leere Zeichenfolge durch “F: \\ Allfiles\\Labs\\04\\Starter \\AdventureWorks\\AdventureWorks.Upload\\models.json” ersetzen.
-
Beachten Sie im try-Block den Aufruf der CreateDatabaseIfNotExistsAsync-Methode der CosmosClient-Klasse. Dadurch wird eine Datenbank erstellt, sofern noch keine Datenbank vorhanden ist.
-
Beachten Sie den Aufruf der DefineContainer-Methode der Database-Klasse. Dadurch wird ein Container erstellt, der die JSON-Elemente hostet, sofern noch kein Container vorhanden ist.
Hinweis: Die DefineContainer-Methode enthält eine Option zur Kostenminimierung, mit der Sie die Standardindizierungsrichtlinie (die automatisch alle Attribute indiziert) ändern können.
-
Beachten Sie die using-Anweisung, die auf einem StreamReader-Objekt basiert, um JSON-Elemente aus einer Textdatei zu lesen und in Objekte der Model-Klasse zu deserialisieren, die weiter in der Datei Program.cs definiert wird.
-
Beachten Sie die foreach-Schleife, die die Sammlung deserialisierter Objekte durchläuft und diese asynchron in die Zielsammlung einfügt.
-
Überprüfen Sie die Model- Product-Klassen, die das Format der Objekte widerspiegeln, die in der JSON-formatierten Datei gespeichert sind, die Sie zuvor in diesem Lab überprüft haben.
-
Speichern und schließen Sie die Datei Program.cs.
Hinweis: Wählen Sie Überschreiben aus, wenn Ihnen eine Eingabeaufforderung angezeigt wird, die besagt, dass die Datei schreibgeschützt ist.
-
Führen Sie im Terminal den folgenden Befehl aus, um alle fehlenden NuGet-Pakete wiederherzustellen und das Projekt im Ordner zu erstellen:
dotnet build
Hinweis: Mit dem Befehl dotnet build werden alle fehlenden NuGet-Pakete automatisch wiederhergestellt, bevor alle Projekte im Ordner erstellt werden.
-
Führen Sie an der Terminaleingabeaufforderung den folgenden Befehl aus, um die .NET Core-Konsolenanwendung auszuführen:
dotnet run
Hinweis: Der Befehl dotnet run erstellt automatisch alle Änderungen am Projekt und startet dann die Webanwendung ohne einen angefügten Debugger. Der Befehl gibt die Meldungen aus, die den Fortschritt des Datenladevorgangs angeben, einschließlich der Anzahl der Elemente, die in die Zielsammlung eingefügt werden, und der Dauer des Einfügevorgangs.
-
Beobachten Sie die Ergebnisse der Ausführung des Befehls, die im Terminal ausgegeben werden. Die Ausführung sollte erfolgreich abgeschlossen und die Meldung angezeigt werden, dass 119 Elemente in die Cosmos DB-Zielsammlung eingefügt wurden.
-
Wählen Sie Terminal beenden (das Symbol Papierkorb) aus, um den Terminalbereich und alle zugehörigen Prozesse zu schließen.
Aufgabe 4: Überprüfen des JSON-Datenuploads
-
Wechseln Sie auf Ihrem Lab-Computer zum Microsoft Edge-Browserfenster, in dem das Azure-Portal angezeigt wird.
-
Wählen Sie im Azure-Portal das Textfeld Ressourcen, Dienste und Dokumentation durchsuchen aus, und wählen Sie in der Liste Zuletzt verwendeten Ressourcen das Azure Cosmos DB-Konto polycosmos [IhrName] aus, das Sie zuvor in diesem Lab erstellt haben.
-
Suchen Sie auf dem Blatt Azure Cosmos DB-Konto nach dem Link Daten-Explorer, und wählen Sie diesen aus.
-
Erweitern Sie im Bereich Daten-Explorer den Datenbanknoten Retail.
-
Erweitern Sie den Containerknoten Online, und wählen Sie dann Neue SQL Abfrage aus.
Hinweis: Die Bezeichnung für diese Option ist möglicherweise ausgeblendet. Sie können Bezeichnungen anzeigen, indem Sie auf die Symbole im Bereich Daten-Explorer zeigen.
-
Geben Sie auf der Registerkarte „Abfrage“ den folgenden Text ein:
SELECT * FROM models
-
Wählen Sie Abfrage ausführen aus, und sehen Sie sich dann die Liste der JSON-Elemente an, die von der Abfrage zurückgegeben wird.
-
Ersetzen Sie im Abfrage-Editor den vorhandenen Text durch den folgenden Text:
SELECT VALUE COUNT(1) FROM models
-
Wählen Sie Abfrage ausführen aus, und beobachten Sie dann das Ergebnis des COUNT-Aggregatvorgangs. Er sollte „119“ ausgeben, was der Anzahl der eingefügten Elemente entspricht.
-
Wechseln Sie zurück zum Visual Studio Code-Fenster.
Überprüfung
In dieser Übung haben Sie das .NET SDK für Azure Cosmos DB verwendet, um Daten in Azure Cosmos DB einzufügen. Die Webanwendung, die Sie im nächsten Schritt implementieren, verwendet diese Daten.
Übung 3: Konfigurieren einer .NET-Webanwendung
Aufgabe 1: Aktualisieren von Verweisen auf Datenspeicher und Erstellen der Webanwendung
-
Erweitern Sie im Bereich Explorer des Visual Studio Code-Fensters das Projekt AdventureWorks.Web.
-
Öffnen Sie die Datei appsettings.json.
-
Suchen Sie im JSON-Objekt in Zeile 3 nach dem Pfad ConnectionStrings.AdventureWorksCosmosContext. Beachten Sie, dass der aktuelle Wert leer ist:
"ConnectionStrings": { "AdventureWorksCosmosContext": "", },
-
Aktualisieren Sie den Wert der AdventureWorksCosmosContext-Eigenschaft, indem Sie ihren Wert auf die PRIMÄRE VERBINDUNGSZEICHENFOLGE des Azure Cosmos DB-Kontos festlegen, die Sie sich zuvor in diesem Lab notiert haben. Dies ist der dritte Wert, den Sie im Editor aufgezeichnet haben.
-
Suchen Sie im JSON-Objekt in Zeile 6 nach der Eigenschaft Settings.BlobContainerUrl. Beachten Sie, dass der aktuelle Wert leer ist:
"Settings": { "BlobContainerUrl": "", "BlobSASToken": "" }
-
Aktualisieren Sie die Eigenschaften BlobContainerUrl und BlobSASToken indem Sie ihre Werte auf die Eigenschaft URL des Azure Storage-Blobcontainers mit dem Namen images und den Wert des SAS-Tokens des Blob festlegen, die Sie sich zuvor in diesem Lab notiert haben. Dies sind der vierte und fünfte Wert, die Sie im Editor aufgezeichnet haben.
-
Speichern Sie die Datei appsettings.json, und schließen Sie sie.
Hinweis: Wählen Sie Überschreiben aus, wenn Ihnen eine Eingabeaufforderung angezeigt wird, die besagt, dass die Datei schreibgeschützt ist.
-
Klicken Sie in Visual Studio Code im Explorer-Bereich mit der rechten Maustaste auf den Ordner AdventureWorks.Context, und wählen Sie In integriertem Terminal öffnen aus.
Hinweis: Öffnen Sie vor dem nächsten Schritt den Windows-Explorer, und entfernen Sie das schreibgeschützte Attribut aus der Datei Allfiles (F):\Allfiles\Labs\04\Starter\AdventureWorks\AdventureWorks.Context\AdventureWorks.Context.csproj.
-
Überprüfen Sie an der Terminaleingabeaufforderung, ob das aktuelle Verzeichnis auf AdventureWorks.Context festgelegt ist (ändern Sie es in dieses Verzeichnis, falls dies nicht der Fall ist), und führen Sie dann den folgenden Befehl aus, um Microsoft.Azure.Cosmos aus NuGet zu importieren:
Hinweis: Bevor Sie mit dem folgenden Befehl fortfahren, stellen Sie sicher, dass Sie derzeit unter diesem Pfad positioniert sind: (F):\Allfiles\Labs\04\Starter\AdventureWorks\AdventureWorks.Context\
dotnet add package Microsoft.Azure.Cosmos --version 3.28.0
-
Führen Sie an der Terminaleingabeaufforderung den folgenden Befehl aus, um das Projekt AdventureWorks.Context zu erstellen:
dotnet build
-
Beobachten Sie die Ergebnisse des Builds, die im Terminal ausgegeben werden. Der Build sollte ohne Fehler oder Warnmeldungen erfolgreich abgeschlossen werden.
Aufgabe 2: Konfigurieren der Konnektivität mit Azure Cosmos DB
-
Erweitern Sie im Bereich Explorer des Visual Studio Code-Fensters das Projekt AdventureWorks.Context.
-
Wählen Sie im Kontextmenü des Ordnerknotens AdventureWorks.Context die Option Neue Datei aus.
-
Geben Sie an der neuen Dateieingabeaufforderung AdventureWorksCosmosContext.cs ein.
-
Fügen Sie auf der Registerkarte des Code-Editors für die Datei AdventureWorksCosmosContext.cs den folgenden Code hinzu:
using AdventureWorks.Models; using Microsoft.Azure.Cosmos; using Microsoft.Azure.Cosmos.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace AdventureWorks.Context { /* AdventureWorksCosmosContext class will implement the IAdventureWorksProductContext interface */ public class AdventureWorksCosmosContext : IAdventureWorksProductContext { /* Create a new read-only Container variable named _container */ private readonly Container _container; public AdventureWorksCosmosContext(string connectionString, string database = "Retail", string container = "Online") { /* Create a new instance of the CosmosClient class, and then obtain both a Database and Container instance from the client */ _container = new CosmosClient(connectionString) .GetDatabase(database) .GetContainer(container); } public async Task<Model> FindModelAsync(Guid id) { /* Create a LINQ query, transform it into an iterator, iterate over the result set, and then return the single item in the result set */ var iterator = _container.GetItemLinqQueryable<Model>() .Where(m => m.id == id).ToFeedIterator<Model>(); List<Model> matches = new List<Model>(); while (iterator.HasMoreResults) { var next = await iterator.ReadNextAsync(); matches.AddRange(next); } return matches.SingleOrDefault(); } public async Task<List<Model>> GetModelsAsync() { /* Run an SQL query, get the query result iterator, iterate over the result set, and then return the union of all results */ string query = $@"SELECT * FROM items"; var iterator = _container.GetItemQueryIterator<Model>(query); List<Model> matches = new List<Model>(); while (iterator.HasMoreResults) { var next = await iterator.ReadNextAsync(); matches.AddRange(next); } return matches; } public async Task<Product> FindProductAsync(Guid id) { /* Run an SQL query, get the query result iterator, iterate over the result set, and then return the single item in the result set */ string query = $@"SELECT VALUE products FROM models JOIN products in models.Products WHERE products.id = '{id}'"; var iterator = _container.GetItemQueryIterator<Product>(query); List<Product> matches = new List<Product>(); while (iterator.HasMoreResults) { var next = await iterator.ReadNextAsync(); matches.AddRange(next); } return matches.SingleOrDefault(); } } }
- Speichern und schließen Sie die Datei AdventureWorksCosmosContext.cs.
-
Führen Sie an der Terminaleingabeaufforderung (Verzeichnis festgelegt auf AdventureWorks.Context) den folgenden Befehl aus, um die .NET-Webanwendung zu erstellen:
dotnet build
Hinweis: Wenn Buildfehler auftreten, überprüfen Sie die Datei AdventureWorksCosmosContext.cs im Ordner Allfiles > (F):\Allfiles\Labs\04\Solution\AdventureWorks\AdventureWorks.Context.
Aufgabe 3: Überprüfen der Startlogik der .NET-Anwendung
-
Erweitern Sie im Bereich Explorer des Visual Studio Code-Fensters das Projekt AdventureWorks.Web.
-
Öffnen Sie die Datei Startup.cs.
-
Beachten Sie in der Startup-Klasse die vorhandene ConfigureProductService-Methode:
public void ConfigureProductService(IServiceCollection services) { services.AddScoped<IAdventureWorksProductContext, AdventureWorksCosmosContext>(provider => new AdventureWorksCosmosContext( _configuration.GetConnectionString(nameof(AdventureWorksCosmosContext)) ) ); }
Hinweis: Der Produktdienst verwendet Cosmos DB als Datenbank.
-
Schließen Sie die Datei Startup.cs, ohne Änderungen vorzunehmen.
Aufgabe 4: Überprüfen, ob die .NET-Anwendung erfolgreich eine Verbindung mit Datenspeichern herstellt
-
Führen Sie in Visual Studio Code an der Terminaleingabeaufforderung den folgenden Befehl aus, um den Terminalkontext in den Ordner AdventureWorks.Web umzuschalten:
cd ..\AdventureWorks.Web\
-
Führen Sie an der Terminaleingabeaufforderung den folgenden Befehl aus, um die ASP.NET-Webanwendung auszuführen:
Hinweis: Bevor Sie mit dem folgenden Befehl fortfahren, stellen Sie sicher, dass Sie derzeit unter diesem Pfad positioniert sind: (F):\Allfiles\Labs\04\Starter\AdventureWorks\AdventureWorks.Web\
dotnet run
Hinweis: Der Befehl dotnet run erstellt automatisch alle Änderungen am Projekt und startet dann die Webanwendung ohne einen angefügten Debugger. Der Befehl gibt die URL der ausgeführten Anwendung und alle zugewiesenen Ports aus.
-
Wählen Sie auf der Taskleiste das Symbol Microsoft Edge aus.
-
Navigieren Sie im geöffneten Browserfenster zur aktuell ausgeführten Webanwendung (http://localhost:5000).
-
Sehen Sie sich in der Webanwendung die Liste der Modelle an, die auf der Startseite angezeigt wird.
-
Suchen Sie nach dem Modell Touring-1000, und wählen Sie dann Details anzeigen aus.
-
Überprüfen Sie auf der Produktdetailseite Touring-1000 die Liste der Optionen.
-
Schließen Sie das Browserfenster, in dem Ihre Webanwendung angezeigt wird.
-
Wechseln Sie zum Visual Studio Code-Fenster, und wählen Sie dann Terminal beenden (das Symbol Papierkorb) aus, um das derzeit geöffnete Terminal und alle zugehörigen Prozesse zu schließen.
Überprüfung
In dieser Übung haben Sie C#-Code geschrieben, um eine Azure Cosmos DB-Sammlung mithilfe des .NET SDK abzufragen.