Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:Azure SQL-Datenbank
In dieser Schnellstartanleitung wird beschrieben, wie Sie eine Anwendung mit einer Datenbank in Azure SQL-Datenbank verbinden und Abfragen mithilfe von .NET und Entity Framework Core ausführen. In dieser Schnellstartanleitung wird der empfohlene kennwortlose Ansatz zum Herstellen einer Verbindung mit der Datenbank verwendet. Sie können mehr über kennwortlose Verbindungen auf dem kennwortlosen Hub erfahren.
Voraussetzungen
- Ein Azure-Abonnement.
- Eine SQL-Datenbank, die für die Authentifizierung mit Microsoft Entra ID (früher Azure Active Directory) konfiguriert ist. Sie können eine mithilfe der Schnellstartanleitung erstellen: Erstellen einer einzelnen Datenbank – Azure SQL-Datenbank.
- .NET 9.0 oder höher.
- Visual Studio oder höher mit der Workload für ASP.NET und Webentwicklung.
- Die aktuelle Version der Azure-Befehlszeilenschnittstelle.
- Die aktuelle Version der Entity Framework Core-Tools:
- Visual Studio-Benutzer sollten die Paket-Manager-Konsolentools für Entity Framework Core installieren.
- .NET CLI-Benutzer sollten die .NET CLI-Tools für Entity Framework Core installieren.
Konfigurieren des Datenbankservers
Sichere, kennwortlose Verbindungen mit Azure SQL-Datenbank erfordern bestimmte Datenbankkonfigurationen. Überprüfen Sie die folgenden Einstellungen auf Ihrem logischen Server in Azure, um eine ordnungsgemäße Verbindung mit Azure SQL-Datenbank in lokalen und gehosteten Umgebungen herzustellen:
Stellen Sie für Verbindungen bei der lokalen Entwicklung sicher, dass Ihr logischer Server so konfiguriert ist, dass die IP-Adresse Ihres lokalen Computers und andere Azure-Dienste eine Verbindung herstellen können:
Wechseln Sie zur Seite Netzwerk für Ihren Server.
Verwenden Sie das Optionsfeld Ausgewählte Netzwerke, um zusätzliche Konfigurationsoptionen anzuzeigen.
Wählen Sie Client-IPv4-Adresse (xx.xx.xx.xx) hinzufügen aus, um eine Firewallregel hinzuzufügen, die Verbindungen von der IPv4-Adresse Ihres lokalen Computers ermöglicht. Alternativ können Sie auch + Firewallregel hinzufügen auswählen, um eine bestimmte IP-Adresse Ihrer Wahl einzugeben.
Vergewissern Sie sich, dass das Kontrollkästchen Azure-Diensten und -Ressourcen den Zugriff auf diesen Server gestatten aktiviert ist.
Warnung
Das Aktivieren der Einstellung Azure-Diensten und -Ressourcen den Zugriff auf diesen Server gestatten ist kein empfohlenes Sicherheitsverfahren für Produktionsszenarien. Echte Anwendungen sollten sicherere Ansätze implementieren, z. B. stärkere Firewalleinschränkungen oder Konfigurationen mit virtuellen Netzwerken.
Weitere Informationen zum Konfigurieren der Datenbanksicherheit finden Sie in den folgenden Ressourcen:
Der Server muss auch die Microsoft Entra-Authentifizierung aktiviert haben und ein Microsoft Entra-Administratorkonto zugewiesen haben. Bei lokalen Entwicklungsverbindungen sollte das Microsoft Entra-Administratorkonto ein Konto sein, mit dem Sie sich auch lokal bei Visual Studio oder der Azure CLI anmelden können. Sie können überprüfen, ob der Server die Microsoft Entra-Authentifizierung auf der Microsoft Entra-ID-Seite Ihres logischen Servers aktiviert hat.
Wenn Sie ein persönliches Azure-Konto verwenden, stellen Sie sicher, dass Sie Microsoft Entra für Azure SQL Database eingerichtet und konfiguriert haben, um Ihr Konto als Server-Admin zuzuweisen. Wenn Sie ein Unternehmenskonto verwenden, ist die Microsoft Entra ID höchstwahrscheinlich bereits für Sie konfiguriert.
Erstellen des Projekts
Mit den Schritten in diesem Abschnitt wird über die .NET-CLI oder in Visual Studio 2022 eine .NET-Minimal-Web-API erstellt.
Navigieren Sie auf der Visual Studio-Menüleiste zu Datei>Neu>Projekt....
Geben Sie im Dialogfeld ASP.NET in das Suchfeld der Projektvorlage ein, und wählen Sie das Ergebnis „ASP.NET Core-Web-API“ aus. Wählen Sie unten im Dialogfeld Weiter aus.
Geben Sie als ProjektnamenDotNetSQL ein. Übernehmen Sie bei den restlichen Feldern die Standardwerte, und wählen Sie Weiter aus.
Wählen Sie für das Framework .NET 9.0 aus, und deaktivieren Sie die Option "Controller verwenden". In dieser Schnellstartanleitung wird eine Minimal-API-Vorlage verwendet, um die Erstellung und Konfiguration von Endpunkten zu optimieren.
Wählen Sie Erstellen. Das neue Projekt wird in der Visual Studio-Umgebung geöffnet.
Hinzufügen von Entity Framework Core zum Projekt
Um über .NET und Entity Framework Core eine Verbindung mit Azure SQL Datenbank herzustellen, müssen Sie Ihrem Projekt mithilfe einer der folgenden Methoden drei NuGet-Pakete hinzufügen:
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Knoten Abhängigkeiten, und wählen Sie NuGet-Pakete verwalten aus.
Suchen Sie im diesem Fenster nach EntityFrameworkCore. Suchen und installieren Sie die folgenden Pakete:
-
Microsoft.EntityFrameworkCore: Stellt wesentliche Entity Framework Core-Funktionen bereit. -
Microsoft.EntityFrameworkCore.SqlServer: Stellt zusätzliche Komponenten zum Herstellen einer Verbindung mit dem logischen Server bereit. -
Microsoft.EntityFrameworkCore.Design: Bietet Unterstützung für die Ausführung von Entity Framework-Migrationen -
Microsoft.EntityFrameworkCore.Tools: Bietet Unterstützung für visual Studio Package Manager Console Tooling (nur PowerShell) -
Swashbuckle.AspNetCore: Optional – bietet Unterstützung für die SwaggerUI-Interaktion mit den App-Endpunkten
Hinzufügen des Codes zum Herstellen einer Verbindung mit Azure SQL-Datenbank
Die Entity Framework Core-Bibliotheken nutzen die Bibliotheken Microsoft.Data.SqlClient und Azure.Identity, um kennwortlose Verbindungen mit Azure SQL Datenbank zu implementieren. Die Bibliothek Azure.Identity stellt eine Klasse namens DefaultAzureCredential bereit, die die kennwortlose Authentifizierung bei Azure verarbeitet.
DefaultAzureCredential unterstützt mehrere Authentifizierungsmethoden und bestimmt, welche zur Runtime verwendet wird. Bei diesem Ansatz kann Ihre App unterschiedliche Authentifizierungsmethoden in verschiedenen Umgebungen (lokal gegenüber Produktion) verwenden, ohne umgebungsspezifischen Code zu implementieren. Die Reihenfolge und Speicherorte, in denen nach Anmeldeinformationen sucht, finden Sie in der DefaultAzureCredential.
Führen Sie die folgenden Schritte aus, um mithilfe von Entity Framework Core und der zugrunde liegenden Klasse DefaultAzureCredential eine Verbindung mit Azure SQL Datenbank herzustellen:
Fügen Sie der
ConnectionStringsDatei einenappsettings.Development.json-Abschnitt entsprechend dem folgenden Code hinzu. Ersetzen Sie den<server>.database.windows.netNamen des kennwortlosen Datenbankservers, mit dem Sie eine Verbindung herstellen möchten, und<database>durch den Namen der Datenbank.{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ConnectionStrings": { "AZURE_SQL_CONNECTIONSTRING": "Data Source=<server>.database.windows.net;Initial Catalog=<database>;Authentication=Active Directory Default;Encrypt=True;" } }Hinweis
Denken Sie daran, die
<your database-server-name>Platzhalter<your-database-name>in der Datenbankverbindungszeichenfolge zu aktualisieren. Kennwortlose Verbindungszeichenfolgen sind sicher, die Quellcodeverwaltung zu übernehmen, da sie keine geheimen Schlüssel wie Benutzernamen, Kennwörter oder Zugriffstasten enthalten.Die kennwortlose Verbindungszeichenfolge enthält den Konfigurationswert
Authentication=Active Directory Default, der es Entity Framework Core ermöglicht,DefaultAzureCredentialzum Herstellen einer Verbindung mit Azure-Diensten zu verwenden. Wenn die App lokal ausgeführt wird, authentifiziert sie sich mit dem Benutzer, als der Sie bei Visual Studio angemeldet sind. Sobald die App in Azure bereitgestellt wird, ermittelt und wendet derselbe Code die verwaltete Identität an, die der gehosteten App zugeordnet ist, die Sie später konfigurieren.Ersetzen Sie den Inhalt der Datei
Program.csdurch den folgenden Code:using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(); builder.Services.AddOpenApi(); var connection = String.Empty; if (builder.Environment.IsDevelopment()) { builder.Configuration.AddEnvironmentVariables().AddJsonFile("appsettings.Development.json"); connection = builder.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING"); } else { connection = Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING"); } builder.Services.AddDbContext<PersonDbContext>(options => options.UseSqlServer(connection)); var app = builder.Build(); if (app.Environment.IsDevelopment()) { app.MapOpenApi(); app.UseSwaggerUI(options => { options.SwaggerEndpoint("/openapi/v1.json", "v1"); }); } app.MapGet("/", () => "Hello world!"); app.MapGet("/Person", (PersonDbContext context) => { return context.Person.ToList(); }); app.MapPost("/Person", (Person person, PersonDbContext context) => { context.Add(person); context.SaveChanges(); }); app.Run(); public class Person { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } } public class PersonDbContext : DbContext { public PersonDbContext(DbContextOptions<PersonDbContext> options) : base(options) { } public DbSet<Person> Person { get; set; } }Der vorangehende Code behandelt die folgenden Schritte:
- Ruft die kennwortlose Datenbank-Verbindungszeichenfolge für die lokale Entwicklung aus der Datei
appsettings.Development.jsonoder in gehosteten Produktionsszenarien aus den Umgebungsvariablen ab. - Registriert die Entity Framework Core-Klasse
DbContextbeim .NET-Container für die Abhängigkeitsinjektion. Weitere Informationen zuDbContextfinden Sie in der Dokumentation Erste Schritte für Entity Framework Core. - Konfiguriert die .NET 9.0 OpenAPI-Unterstützung mit SwaggerUI, um eine Benutzeroberfläche bereitzustellen, die Sie für die Interaktion mit den App-Endpunkten und -Datenbanken verwenden können.
- Fügt Endpunkte zum Abrufen und Hinzufügen von Entitäten in der Datenbank hinzu.
- Definiert eine
PersonKlasse, die einen einzelnen Datensatz in derPersonsDatenbanktabelle darstellt, und die Klasse, diePersonDbContextbeim .NET-Abhängigkeitseinfügungscontainer registriert wurde.
- Ruft die kennwortlose Datenbank-Verbindungszeichenfolge für die lokale Entwicklung aus der Datei
Ausführen der Migrationen zum Erstellen der Datenbank
Um das Datenbankschema so zu aktualisieren, dass es Ihrem Datenmodell mit Entity Framework Core entspricht, müssen Sie eine Migration verwenden. Migrationen können ein Datenbankschema erstellen und inkrementell aktualisieren, um es mit dem Datenmodell Ihrer Anwendung zu synchronisieren. Mehr über dieses Muster erfahren Sie in der Migrationsübersicht.
Öffnen Sie ein Terminalfenster im Stamm Ihres Projekts.
Führen Sie den folgenden Befehl aus, um eine Erstmigration zu generieren, mit der die Datenbank erstellt werden kann:
Add-Migration InitialCreate
In Ihrem Projektverzeichnis sollte der Ordner
Migrationsangezeigt werden, zusammen mit einer Datei mit dem NamenInitialCreate, dem eindeutige Ziffern vorangestellt sind. Führen Sie die Migration aus, um die Datenbank mithilfe des folgenden Befehls zu erstellen, und das Entity Framework Core-Tooling erstellt das Datenbankschema in Azure, das von derPersonDbContextKlasse definiert wird.Update-Database
Lokales Testen der App
Die App kann lokal getestet werden. Stellen Sie sicher, dass Sie bei Visual Studio oder der Azure CLI mit demselben Konto angemeldet sind, das Sie als Administrator für Ihre Datenbank festgelegt haben.
Klicken Sie oben in Visual Studio auf die Schaltfläche „Ausführen“, um das API-Projekt zu starten.
Erweitern Sie auf der Swagger-UI-Seite die POST-Methode, und wählen Sie Ausprobieren aus.
Ändern Sie den JSON-Beispielwert so, dass Werte für den Vornamen und den Familiennamen enthalten sind. Wählen Sie Ausführen aus, um der Datenbank einen neuen Datensatz hinzuzufügen. Die API gibt eine Erfolgsmeldung zurück.
Erweitern Sie die
GETMethode auf der Seite "Swagger UI", und wählen Sie "Testen" aus. Wählen Sie Ausführen aus, und die soeben erstellte Person wird zurückgegeben.
Bereitstellung in Azure App Service
Die App kann jetzt in Azure bereitgestellt werden. Visual Studio kann eine Azure App Service-Instanz erstellen und Ihre Anwendung in einem einzigen Workflow bereitstellen.
Stellen Sie sicher, dass die App beendet und erfolgreich erstellt ist.
Klicke Sie im Projektmappen-Explorer-Fenster von Visual Studio mit der rechten Maustaste auf den Projektknoten der obersten Ebene, und wählen Sie Veröffentlichen aus.
Wählen Sie im Veröffentlichungsdialogfeld Azure als Bereitstellungsziel und dann Weiter aus.
Wählen Sie als bestimmtes Ziel Azure App Service (Windows) und dann Weiter aus.
Wählen Sie das grüne +-Symbol aus, um eine neue App Service-Instanz zur Bereitstellung zu erstellen, und geben Sie die folgenden Werte ein:
- Name: Behalten Sie den Standardwert bei.
- Abonnementname: Wählen Sie das Abonnement aus, in das die Bereitstellung erfolgen soll.
- Ressourcengruppe: Wählen Sie Neu aus, und erstellen Sie eine neue Ressourcengruppe mit dem Namen msdocs-dotnet-sql.
- Hostingplan: Wählen Sie Neu aus, um das Dialogfeld „Hostingplan“ zu öffnen. Behalten Sie die Standardwerte bei, und wählen Sie OK aus.
- Wählen Sie Erstellen aus, um das ursprüngliche Dialogfeld zu schließen. Visual Studio erstellt die App Service-Ressource in Azure.
Nachdem die Ressource erstellt wurde, stellen Sie sicher, dass Sie in der Liste der App-Dienste auswählen und dann "Weiter" auswählen.
Aktivieren Sie im Schritt API Management unten das Kontrollkästchen Diesen Schritt überspringen, und wählen Sie dann Fertig stellen aus.
Wählen Sie oben rechts in der Zusammenfassung des Veröffentlichungsprofils Veröffentlichen aus, um die App in Azure bereitzustellen.
Nach der Bereitstellung startet Visual Studio den Browser, um die gehostete App anzuzeigen. Die Nachricht sollte vom Standardendpunkt angezeigt Hello world werden. An diesem Punkt funktionieren die Datenbankendpunkte jedoch nicht ordnungsgemäß in Azure. Sie müssen weiterhin die sichere Verbindung zwischen der App Service- und der SQL-Datenbank-Instanz konfigurieren, um Ihre Daten abzurufen.
Verbinden der App Service-Instanz mit Azure SQL-Datenbank
Die folgenden Schritte sind erforderlich, um die App Service- mit der Azure SQL-Datenbank-Instanz zu verbinden:
- Erstellen Sie eine verwaltete Identität für die App Service-Instanz. Die
Microsoft.Data.SqlClientin Ihrer App enthaltene Bibliothek erkennt automatisch die verwaltete Identität, genau wie sie ihren lokalen Visual Studio-Benutzer ermittelt hat. - Erstellen Sie einen SQL-Datenbankbenutzer, und ordnen Sie ihn der verwalteten App Service-Identität zu.
- Weisen Sie dem Datenbankbenutzer SQL-Rollen zu, die über Lese-, Schreib- und möglicherweise andere Berechtigungen verfügen.
Es stehen mehrere Tools zur Implementierung dieser Schritte zur Verfügung:
Der Dienstconnector ist ein Tool, das authentifizierte Verbindungen zwischen verschiedenen Diensten in Azure optimiert. Service Connector unterstützt derzeit das Verbinden eines App-Diensts mit einer SQL-Datenbank mithilfe der Kennwortlosen Erweiterung azure CLI.
Installieren oder aktualisieren Sie die kennwortlose Service Connector-Erweiterung:
az extension add --name serviceconnector-passwordless --upgradeFühren Sie den
az webapp connection create sqlBefehl aus, um Ihre Web-App mithilfe einer vom System zugewiesenen verwalteten Identität mit der Datenbank zu verbinden. Ersetzen Sie die Platzhalter durch entsprechende Werte:az webapp connection create sql -g <your-resource-group> -n <your-app-service-name> --tg <your-database-server-resource-group> --server <your-database-server-name> --database <your-database-name> --system-identity
Sie können die vom Dienstconnector vorgenommenen Änderungen in den App Service-Einstellungen überprüfen.
Navigieren Sie zur Seite Identität für Ihre App Service-Instanz. Auf der Registerkarte Systemseitig zugewiesen sollte der Status auf Ein festgelegt werden. Dieser Wert bedeutet, dass eine systemseitig zugewiesene verwaltete Identität für Ihre App aktiviert wurde.
Navigieren Sie zur Seite Konfiguration für Ihre App Service-Ressource. Unter der Registerkarte "Verbindungszeichenfolgen " sollte eine Verbindungszeichenfolge mit dem Namen angezeigt werden
AZURE_SQL_CONNECTIONSTRING. Wählen Sie Klicken Sie, um den Wert anzuzeigen aus, um die generierte kennwortlose Verbindungszeichenfolge anzuzeigen. Der Name dieser Verbindungszeichenfolge richtet sich an die in Ihrer App konfigurierte Verbindungszeichenfolge, sodass sie automatisch erkannt wird, wenn sie in Azure ausgeführt wird.
Wichtig
Obwohl diese Lösung einen einfachen Ansatz für die ersten Schritte bietet, ist sie keine bewährte Methode für Unternehmensproduktionsumgebungen. In diesen Szenarien sollte die App nicht alle Vorgänge mit einer einzigen, erhöhten Identität ausführen. Sie sollten versuchen, das Prinzip der geringsten Rechte zu implementieren, indem Sie mehrere Identitäten mit bestimmten Berechtigungen für bestimmte Aufgaben konfigurieren. Weitere Informationen zum Konfigurieren von Datenbankrollen und Sicherheit finden Sie unter:
Testen der bereitgestellten Anwendung
Navigieren Sie zur URL der App, um zu testen, ob die Verbindung mit Azure SQL-Datenbank funktioniert. Sie finden die URL Ihrer App auf der App Service-Übersichtsseite. Fügen Sie den /person-Pfad dem Ende der URL an, um zu dem Endpunkt zu navigieren, den Sie lokal getestet haben.
Die Person, die Sie lokal erstellt haben, sollte im Browser angezeigt werden. Herzlichen Glückwunsch, Ihre Anwendung ist jetzt sowohl in lokalen als auch in gehosteten Umgebungen mit Azure SQL-Datenbank verbunden.
Bereinigen der Ressourcen
Wenn Sie Ihre Arbeit mit der Azure SQL-Datenbank abgeschlossen haben, löschen Sie die Ressource, um unbeabsichtigte Gebühren zu vermeiden.
Geben Sie in der Suchleiste des Azure-Portals Azure SQL ein, und wählen Sie das entsprechende Ergebnis aus.
Suchen Sie Ihre Datenbank in der Liste der Datenbanken, und wählen Sie sie aus.
Wählen Sie auf der Seite Übersicht Ihrer Azure SQL-Datenbank die Option Löschen aus.
Geben Sie auf der daraufhin geöffneten Azure-Seite Möchten Sie ... löschen zur Bestätigung den Namen Ihrer Datenbank ein, und wählen Sie dann Löschen aus.
Hinweis
Wenn Sie die Beispiel-App in Azure bereitgestellt haben, müssen Sie auch nach der App Service-Ressource suchen und löschen, um unbeabsichtigte Kosten zu vermeiden.
Zugehöriger Inhalt
- Tutorial: Schützen einer Datenbank in Azure SQL-Datenbank
- Autorisieren des Datenbankzugriffs für Azure SQL-Datenbank, SQL Managed Instance und Azure Synapse Analytics
- Übersicht über die Sicherheitsfunktionen von Azure SQL-Datenbank und SQL Managed Instance
- Playbook zur Behandlung allgemeiner Sicherheitsanforderungen mit Azure SQL-Datenbank und azure SQL Managed Instance