Sdílet prostřednictvím


Připojení ke službě Azure SQL Database a dotazování na ji pomocí .NET a Entity Framework Core

Platí pro:Azure SQL Database

Tento rychlý start popisuje, jak připojit aplikaci k databázi ve službě Azure SQL Database a provádět dotazy pomocí .NET a Entity Framework Core. Tento rychlý start se řídí doporučeným přístupem bez hesla pro připojení k databázi. Další informace o připojeních bez hesel najdete v centru bez hesel.

Požadavky

Konfigurace databázového serveru

Zabezpečená bez hesla připojení ke službě Azure SQL Database vyžadují určité konfigurace databáze. Ověřte na logickém serveru v Azure následující nastavení, abyste se mohli správně připojit ke službě Azure SQL Database v místním i hostovaným prostředí:

  1. V případě místních vývojových připojení se ujistěte, že je váš logický server nakonfigurovaný tak, aby umožňoval připojení IP adresy místního počítače a dalších služeb Azure:

    • Přejděte na stránku Sítě vašeho serveru.

    • Přepněte přepínač Vybrané sítě, aby se zobrazily další možnosti konfigurace.

    • Vyberte Přidat adresu IPv4 klienta (xx.xx.xx.xx) a přidejte pravidlo brány firewall, které povolí připojení z adresy IPv4 místního počítače. Případně můžete také vybrat + Přidat pravidlo firewallu a zadat konkrétní IP adresu, kterou si vyberete.

    • Ujistěte se, že je zaškrtnuté políčko Povolit službám a prostředkům Azure přístup k tomuto serveru .

      Snímek obrazovky znázorňující, jak nakonfigurovat pravidla brány firewall

      Varování

      Povolení přístupu ke službám a prostředkům Azure pro přístup k tomuto nastavení serveru není doporučeným postupem zabezpečení pro produkční scénáře. Skutečné aplikace by měly implementovat bezpečnější přístupy, jako jsou silnější omezení brány firewall nebo konfigurace virtuální sítě.

      Další informace o konfiguracích zabezpečení databáze najdete v následujících zdrojích informací:

  2. Server musí mít také povolené ověřování Microsoft Entra a musí mít přiřazený účet správce Microsoft Entra. Pro místní vývojová připojení by měl být účet správce Microsoft Entra účtem, ke kterým se můžete také přihlásit do sady Visual Studio nebo Azure CLI místně. Můžete ověřit, zda má váš server povolené ověřování Microsoft Entra na stránce Microsoft Entra ID vašeho logického serveru.

    Snímek obrazovky znázorňující povolení ověřování Microsoft Entra

  3. Pokud používáte osobní účet Azure, ujistěte se, že máte Microsoft Entra nastavené a nakonfigurované pro Azure SQL Database, abyste mohli účet přiřadit jako správce serveru. Pokud používáte podnikový účet, ID Microsoft Entra bude pravděpodobně již nakonfigurované pro vás.

Vytvoření projektu

Kroky v této části vytvoří webové rozhraní API .NET Minimal pomocí rozhraní příkazového řádku .NET nebo sady Visual Studio 2022.

  1. V řádku nabídek sady Visual Studio přejděte na Soubor>>

  2. V dialogovém okně zadejte ASP.NET do vyhledávacího pole šablony projektu a vyberte výsledek webového rozhraní API ASP.NET Core. V dolní části dialogového okna zvolte Další .

  3. Jako název projektu zadejte DotNetSQL. Ponechte výchozí hodnoty pro zbývající pole a vyberte Další.

  4. V rozhraní vyberte .NET 9.0 a zrušte zaškrtnutí políčka Použít kontrolery. Tento rychlý start používá šablonu minimálního rozhraní API ke zjednodušení vytváření a konfigurace koncových bodů.

  5. Zvolte Vytvořit. Nový projekt se otevře v prostředí sady Visual Studio.

Přidání Entity Framework Core do projektu

Pokud se chcete připojit ke službě Azure SQL Database pomocí .NET a Entity Framework Core, musíte do projektu přidat tři balíčky NuGet pomocí jedné z následujících metod:

  1. V okně Průzkumník řešení klikněte pravým tlačítkem na uzel Závislosti projektu a vyberte Spravovat balíčky NuGet.

  2. Ve výsledném okně vyhledejte EntityFrameworkCore. Vyhledejte a nainstalujte následující balíčky:

  • Microsoft.EntityFrameworkCore: Poskytuje základní funkce Entity Framework Core.
  • Microsoft.EntityFrameworkCore.SqlServer: Poskytuje další komponenty pro připojení k logickému serveru.
  • Microsoft.EntityFrameworkCore.Design: Poskytuje podporu pro spouštění migrací entity Framework.
  • Microsoft.EntityFrameworkCore.Tools: Poskytuje podporu pro nástroje konzoly Správce balíčků sady Visual Studio (jenom PowerShell)
  • Swashbuckle.AspNetCore: Volitelné – poskytuje podporu pro interakci SwaggerUI s koncovými body aplikace.

Přidání kódu pro připojení ke službě Azure SQL Database

Knihovny Entity Framework Core využívají Microsoft.Data.SqlClient knihovny a Azure.Identity knihovny k implementaci připojení bez hesel ke službě Azure SQL Database. Knihovna Azure.Identity poskytuje třídu s názvem DefaultAzureCredential , která zpracovává ověřování bez hesla do Azure.

DefaultAzureCredential podporuje více metod ověřování a určuje, které se mají použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (místní a produkční) bez implementace kódu specifického pro prostředí. Přehled knihovny Azure Identity vysvětluje pořadí a umístění, ve kterých se hledají přihlašovací údaje.

Pokud se chcete připojit ke službě Azure SQL Database pomocí Entity Framework Core a základní DefaultAzureCredential třídy, proveďte následující kroky:

  1. Do souboru ConnectionStrings přidejte oddíl appsettings.Development.json tak, aby odpovídal následujícímu kódu. Nahraďte <server>.database.windows.net názvem databázového serveru bez hesla, ke kterému se chcete připojit, a <database> názvem databáze.

    {
        "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;"
        }
    }
    

    Poznámka:

    Nezapomeňte aktualizovat zástupné symboly <your database-server-name> a <your-database-name> v řetězci pro připojení k databázi. Připojovací řetězce bez hesla se dají bezpečně potvrdit do správy zdrojového kódu, protože neobsahují žádné tajné kódy, jako jsou uživatelská jména, hesla nebo přístupové klíče.

    Připojovací řetězec bez hesla obsahuje hodnotu konfigurace Authentication=Active Directory Default, která umožňuje, aby Entity Framework Core používalo DefaultAzureCredential pro připojení ke službám Azure. Když se aplikace spustí místně, přihlásí se pomocí uživatele, kterého jste použili pro přihlášení k sadě Visual Studio. Jakmile se aplikace nasadí do Azure, stejný kód zjistí a použije spravovanou identitu přidruženou k hostované aplikaci, kterou nakonfigurujete později.

  2. Obsah souboru Program.cs nahraďte následujícím kódem:

    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; }
    }
    

    Předchozí kód zpracovává následující kroky:

    • Načte bezheslový připojovací řetězec databáze ze souboru appsettings.Development.json pro místní vývoj nebo z proměnných prostředí pro hostované produkční scénáře.
    • Zaregistruje třídu Entity Framework Core DbContext v kontejneru injektáže závislostí .NET. Další informace najdete DbContext v dokumentaci Začínáme pro Entity Framework Core.
    • Konfiguruje podporu Rozhraní OpenAPI pro .NET 9.0 pomocí SwaggerUI, aby poskytovalo uživatelské rozhraní, které můžete použít k interakci s koncovými body aplikace a databází.
    • Přidá koncové body pro načtení a přidání entit do databáze.
    • Person Definuje třídu, která bude představovat jeden záznam v Persons tabulce databáze a PersonDbContext třídu zaregistrovanou v kontejneru injektáže závislostí .NET.

Proveďte migrace k vytvoření databáze.

Pokud chcete aktualizovat schéma databáze tak, aby odpovídalo datovému modelu pomocí Entity Framework Core, musíte použít migraci. Migrace můžou vytvořit a přírůstkově aktualizovat schéma databáze, aby bylo synchronizované s datovým modelem vaší aplikace. Další informace o tomto modelu najdete v přehledu migrací.

  1. Otevřete okno terminálu v kořenovém adresáři projektu.

  2. Spuštěním následujícího příkazu vygenerujte počáteční migraci, která může vytvořit databázi:

    Add-Migration InitialCreate
    

  1. V adresáři projektu by se měla zobrazit složka Migrations spolu se souborem InitialCreate, ke kterému jsou připojena jedinečná čísla. Spuštěním migrace vytvořte databázi pomocí následujícího příkazu a nástroje Entity Framework Core vytvoří schéma databáze v Azure definované PersonDbContext třídou.

    Update-Database
    

Místní testování aplikace

Aplikace je připravená k místnímu otestování. Ujistěte se, že jste přihlášení k sadě Visual Studio nebo Azure CLI pomocí stejného účtu, který jste nastavili jako správce vaší databáze.

  1. Stisknutím tlačítka Spustit v horní části sady Visual Studio spusťte projekt rozhraní API.

  2. Na stránce s uživatelským rozhraním Swagger rozbalte metodu POST a vyberte Vyzkoušet.

  3. Upravte ukázkový KÓD JSON tak, aby zahrnoval hodnoty pro jméno a jméno rodiny. Vyberte Spustit a přidejte do databáze nový záznam. Rozhraní API vrátí úspěšnou odpověď.

    Snímek obrazovky znázorňující, jak otestovat rozhraní API

  4. Rozbalte metodu GET na stránce Swagger UI a vyberte Vyzkoušet. Vyberte Spustit a vrátí se osoba, kterou jste právě vytvořili.

Nasadit do služby Azure App Service

Aplikace je připravená k nasazení do Azure. Visual Studio může vytvořit službu Aplikace Azure a nasadit aplikaci v jednom pracovním postupu.

  1. Ujistěte se, že je aplikace zastavená a úspěšně se sestavuje.

  2. V okně Průzkumník řešení sady Visual Studio klikněte pravým tlačítkem myši na uzel projektu nejvyšší úrovně a vyberte Publikovat.

  3. V dialogovém okně publikování vyberte Azure jako cíl nasazení a pak vyberte Další.

  4. Pro konkrétní cíl vyberte Aplikace Azure Service (Windows) a pak vyberte Další.

  5. Výběrem zelené + ikony vytvořte novou službu App Service, do které se nasadí, a zadejte následující hodnoty:

    • Název: Ponechte výchozí hodnotu.
    • Název předplatného: Vyberte předplatné, do které se má nasadit.
    • Skupina prostředků: Vyberte Nový a vytvořte novou skupinu prostředků s názvem msdocs-dotnet-sql.
    • Plán hostování: Výběrem možnosti Nový otevřete dialogové okno plán hostování. Ponechte výchozí hodnoty a vyberte OK.
    • Výběrem možnosti Vytvořit zavřete původní dialogové okno. Visual Studio vytvoří prostředek služby App Service v Azure.

    Snímek obrazovky znázorňující postup nasazení pomocí sady Visual Studio

  6. Po vytvoření prostředku se ujistěte, že jste vybrali v seznamu aplikačních služeb a pak vyberte Další.

  7. V kroku API Management zaškrtněte políčko Přeskočit tento krok v dolní části a pak vyberte Dokončit.

  8. Výběrem možnosti Publikovat v pravém horním rohu souhrnu profilu publikování nasadíte aplikaci do Azure.

Po dokončení nasazení visual Studio spustí prohlížeč, aby se zobrazila hostovaná aplikace. Měli byste vidět Hello world zprávu z výchozího koncového bodu. V tomto okamžiku ale koncové body databáze v Azure nefungují správně. Stále potřebujete nakonfigurovat zabezpečené připojení mezi službou App Service a databází SQL pro načtení dat.

Připojení služby App Service ke službě Azure SQL Database

Pro připojení instance služby App Service ke službě Azure SQL Database jsou potřeba následující kroky:

  1. Vytvořte spravovanou identitu pro službu App Service. Knihovna Microsoft.Data.SqlClient , která je součástí vaší aplikace, automaticky zjistí spravovanou identitu stejně jako místní uživatel sady Visual Studio.
  2. Vytvořte uživatele databáze SQL a přidružte ho ke spravované identitě služby App Service.
  3. Přiřaďte databázovému uživateli role SQL, které umožňují čtení, zápis a potenciálně další oprávnění.

K dispozici je několik nástrojů pro implementaci těchto kroků:

Service Connector je nástroj, který zjednodušuje ověřená připojení mezi různými službami v Azure. Service Connector v současné době podporuje připojení služby App Service k databázi SQL pomocí rozšíření Azure CLI bez hesla.

  1. Nainstalujte nebo upgradujte rozšíření bez hesla konektoru Service Connector:

    az extension add --name serviceconnector-passwordless --upgrade
    
  2. Spuštěním az webapp connection create sql příkazu připojte webovou aplikaci k databázi pomocí spravované identity přiřazené systémem. Zástupné symboly nahraďte příslušnými hodnotami:

    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
    

Změny provedené konektorem služby můžete ověřit v nastavení služby App Service.

  1. Přejděte na stránku Identita vaší služby App Service. Pod kartou Systém přiřazeno by měl být Stav nastaven na Zapnuto. Tato hodnota znamená, že pro vaši aplikaci byla povolena spravovaná identita přiřazená systémem.

  2. Přejděte na stránku Konfigurace vaší služby App Service. Na kartě Připojovací řetězce by se měl zobrazit připojovací řetězec s názvem AZURE_SQL_CONNECTIONSTRING. Kliknutím zobrazíte hodnotu pro zobrazení vygenerovaného připojovacího řetězce bez hesla. Název tohoto připojovacího řetězce odpovídá názvu, který jste v aplikaci nakonfigurovali, takže se automaticky zjistí při spuštění v Azure.

Důležité

I když toto řešení poskytuje jednoduchý přístup pro začátek, není osvědčeným postupem pro podniková produkční prostředí. V těchto scénářích by aplikace neměla provádět všechny operace pomocí jedné zvýšené identity. Měli byste se pokusit implementovat princip nejnižšího oprávnění konfigurací více identit s konkrétními oprávněními pro konkrétní úlohy. Další informace o konfiguraci databázových rolí a zabezpečení naleznete na:

Otestování nasazené aplikace

Přejděte na adresu URL aplikace a otestujte, že funguje připojení ke službě Azure SQL Database. Adresu URL aplikace najdete na stránce přehledu služby App Service. Připojte cestu /person na konec adresy URL, abyste se dostali ke stejnému koncovému bodu, který jste testovali místně.

Osoba, kterou jste vytvořili místně, by se měla zobrazit v prohlížeči. Blahopřejeme, vaše aplikace je teď připojená ke službě Azure SQL Database v místním i hostovaným prostředí.

Ukliďte prostředky

Po dokončení práce se službou Azure SQL Database odstraňte prostředek, abyste se vyhnuli nezamýšleným nákladům.

  1. Na panelu hledání na webu Azure Portal vyhledejte Azure SQL a vyberte odpovídající výsledek.

  2. Vyhledejte a vyberte databázi v seznamu databází.

  3. Na stránce Přehled služby Azure SQL Database vyberte Odstranit.

  4. Na stránce Azure, kterou opravdu chcete odstranit, která se otevře, zadejte název databáze, abyste ji potvrdili, a pak vyberte Odstranit.

Poznámka:

Pokud jste nasadili ukázkovou aplikaci do Azure, nezapomeňte také vyhledat a odstranit prostředek služby App Service, abyste se vyhnuli nezamýšleným nákladům.