Připojení k dotazování služby Azure SQL Database 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 brány firewall a zadat konkrétní IP adresu podle vašeho výběru.

    • 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

      Upozorňující

      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 nastavené a nakonfigurované Microsoft Entra pro Azure SQL Database , abyste mohli účet přiřadit jako správce serveru. Pokud používáte podnikový účet, Bude pro vás pravděpodobně již nakonfigurované ID Microsoft Entra.

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>nový>projekt...

  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 7.0 a zrušte zaškrtnutí políčka Použít kontrolery (zrušte zaškrtnutí pro použití minimálních rozhraní API). 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.

Případně můžete rutinu Install-Package spustit také v okně konzoly Správce balíčků:

Install-Package Microsoft.EntityFrameworkCore
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Design

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 Identit Azure vysvětluje pořadí a umístění, ve kterých DefaultAzureCredential 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. ConnectionStrings Přidejte do appsettings.Development.json souboru oddíl tak, aby odpovídal následujícímu kódu. Nezapomeňte aktualizovat <your database-server-name> zástupné symboly.<your-database-name>

    Připojovací řetězec bez hesla obsahuje hodnotu Authentication=Active Directory Defaultkonfigurace, která umožňuje, aby se entity Framework Core používalo DefaultAzureCredential pro připojení ke službám Azure. Když se aplikace spustí místně, ověří se u uživatele, pomocí něhož jste 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.

    Poznámka:

    Bez hesla připojovací řetězec se bezpečně potvrdí 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.

    {
        "Logging": {
            "LogLevel": {
                "Default": "Information",
                "Microsoft.AspNetCore": "Warning"
            }
        },
        "ConnectionStrings": {
            "AZURE_SQL_CONNECTIONSTRING": "Data Source=passwordlessdbserver.database.windows.net;
                Initial Catalog=passwordlessdb; Authentication=Active Directory Default; Encrypt=True;"
        }
    }
    
  2. Přidejte následující kód do Program.cs souboru nad řádek kódu, který čte var app = builder.Build();. Tento kód provádí následující konfigurace:

    • Načte databázi bez hesla připojovací řetězec ze appsettings.Development.json souboru 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.

      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));
      
  3. Do dolní části Program.cs výše uvedeného app.Run() souboru přidejte následující koncové body pro načtení a přidání entit do databáze pomocí PersonDbContext třídy.

    app.MapGet("/Person", (PersonDbContext context) =>
    {
        return context.Person.ToList();
    })
    .WithName("GetPersons")
    .WithOpenApi();
    
    app.MapPost("/Person", (Person person, PersonDbContext context) =>
    {
        context.Add(person);
        context.SaveChanges();
    })
    .WithName("CreatePerson")
    .WithOpenApi();
    

    Nakonec přidejte do dolní části Program.cs souboru třídy.PersonPersonDbContext Třída Person představuje jeden záznam v tabulce databáze Persons . Třída PersonDbContext představuje databázi Person a umožňuje provádět operace s ním prostřednictvím kódu. Další informace najdete DbContext v dokumentaci Začínáme pro Entity Framework Core.

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

Spuštěním migrací vytvořte databázi.

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
    
  3. Migrations Složka by se měla zobrazit v adresáři projektu spolu se souborem, který má InitialCreate před sebou jedinečná čísla. Spuštěním migrace vytvořte databázi pomocí následujícího příkazu:

    Update-Database
    

    Nástroje Entity Framework Core vytvoří schéma databáze v Azure definované PersonDbContext třídou.

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 obsahoval hodnoty pro křestní jméno a příjmení. 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 uživatelského rozhraní Swagger a vyberte Vyzkoušet. Vyberte Spustit a vrátí se osoba, kterou jste právě vytvořili.

Nasazení do 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 Možnost 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 je vybraný v seznamu aplikačních služeb, a pak vyberte Další.

  7. V kroku SLUŽBY 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č pro zobrazení hostované aplikace, ale v tomto okamžiku aplikace v Azure nefunguje 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í App Service do 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 Připojení or je nástroj, který zjednodušuje ověřená připojení mezi různými službami v Azure. Service Připojení or aktuálně podporuje připojení služby App Service k databázi SQL přes Azure CLI pomocí az webapp connection create sql příkazu. Tento jediný příkaz dokončí tři kroky uvedené výše.

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é službou Připojení 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 Přiřazený systém 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ě řetězce Připojení by se měla zobrazit připojovací řetězec s názvem AZURE_SQL_CONNECTIONSTRING. Kliknutím zobrazíte text hodnoty pro zobrazení vygenerovaného připojovací řetězec bez hesla. Název tohoto připojovací řetězec 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í najdete v následujících zdrojích informací:

Kurz: Zabezpečení databáze ve službě Azure SQL Database

Autorizace přístupu k databázi pro službu SQL Database

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. /person Připojte cestu na konec adresy URL a přejděte ke stejnému koncovému bodu, který jste místně otestovali.

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

Vyčištění prostředků

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.