Megosztás a következőn keresztül:


Csatlakozás és lekérdezés az Azure SQL Database-hez a .NET és az Entity Framework Core használatával

A következőkre vonatkozik:Azure SQL Database

Ez a rövid útmutató bemutatja, hogyan csatlakoztathat egy alkalmazást egy Adatbázishoz az Azure SQL Database-ben, és hogyan hajthat végre lekérdezéseket a .NET és az Entity Framework Core használatával. Ez a rövid útmutató az adatbázishoz való csatlakozás ajánlott jelszó nélküli megközelítését követi. További információt találhatsz a jelszó nélküli kapcsolatokról a jelszó nélküli platformon.

Előfeltételek

Az adatbázis-kiszolgáló konfigurálása

Az Azure SQL Database biztonságos, jelszó nélküli kapcsolataihoz bizonyos adatbázis-konfigurációk szükségesek. Ellenőrizze a következő beállításokat a logikai kiszolgálón az Azure-ben, hogy megfelelően csatlakozzon az Azure SQL Database-hez helyi és üzemeltetett környezetekben is:

  1. Helyi fejlesztési kapcsolatok esetén győződjön meg arról, hogy a logikai kiszolgáló úgy van konfigurálva, hogy a helyi gép IP-címe és más Azure-szolgáltatások kapcsolódhassanak:

    • Lépjen a kiszolgáló hálózatkezelési lapjára.

    • A Kijelölt hálózatok rádiógomb bekapcsolásával további konfigurációs beállításokat jelenít meg.

    • Válassza Adja hozzá az ügyfél IPv4-címét (xx.xx.xx.xx.xx) egy tűzfalszabály hozzáadásához, amely engedélyezi a helyi gép IPv4-címéről érkező kapcsolatokat. Másik lehetőségként választhatja a + Tűzfalszabály hozzáadása lehetőséget is egy tetszőleges IP-cím megadásához.

    • Győződjön meg arról, hogy a Az Azure-szolgáltatások és -erőforrások hozzáférésének engedélyezése a kiszolgálóhoz jelölőnégyzet be van jelölve.

      Képernyőkép a tűzfalszabályok konfigurálásáról.

      Figyelmeztetés

      A „Az Azure-szolgáltatások és -erőforrások hozzáférésének engedélyezése ehhez a kiszolgálóhoz” beállítás engedélyezése nem ajánlott biztonsági gyakorlat éles helyzetekben. A valós alkalmazásoknak biztonságosabb megközelítéseket kell implementálniuk, például erősebb tűzfalkorlátozásokat vagy virtuális hálózati konfigurációkat.

      Az adatbázis biztonsági konfigurációiról az alábbi forrásokban olvashat bővebben:

  2. A kiszolgálónak engedélyeznie kell a Microsoft Entra-hitelesítést is, és hozzá kell rendelnie egy Microsoft Entra rendszergazdai fiókot. Helyi fejlesztési kapcsolatok esetén a Microsoft Entra rendszergazdai fióknak olyan fióknak kell lennie, amellyel helyileg is bejelentkezhet a Visual Studióba vagy az Azure CLI-be. Ellenőrizheti, hogy a kiszolgálón engedélyezve van-e a Microsoft Entra-hitelesítés a logikai kiszolgáló Microsoft Entra-azonosító lapján.

    Képernyőkép a Microsoft Entra-hitelesítés engedélyezéséről.

  3. Ha személyes Azure-fiókot használ, győződjön meg arról, hogy Microsoft Entra-t állította be és konfigurálta az Azure SQL Database- a fiók kiszolgálói rendszergazdaként való hozzárendeléséhez. Ha vállalati fiókot használ, a Microsoft Entra-azonosító valószínűleg már konfigurálva lesz Az Ön számára.

A projekt létrehozása

Az ebben a szakaszban ismertetett lépések egy .NET Minimal Web API-t hoznak létre a .NET CLI vagy a Visual Studio 2022 használatával.

  1. A Visual Studio menüsávjában lépjen a Fájl>új>projekt lapra.

  2. A párbeszédpanelablakban írja be a ASP.NET a projektsablon keresőmezőbe, és válassza ki a ASP.NET Core Web API-találatot. A párbeszédpanel alján válassza a Tovább gombot.

  3. A Projektnévmezőbe írja be DotNetSQL. Hagyja meg a többi mező alapértelmezett értékeit, és válassza a Tovább gombot.

  4. A keretrendszerben válassza a .NET 9.0 lehetőséget, és törölje a jelet a Vezérlők használata jelölőnégyzetből. Ez a rövid útmutató minimális API-sablonnal egyszerűsíti a végpontok létrehozását és konfigurálását.

  5. Válassza a Létrehozás elemet. Az új projekt a Visual Studio-környezetben nyílik meg.

Entity Framework Core hozzáadása a projekthez

Ha az Azure SQL Database-hez a .NET és az Entity Framework Core használatával szeretne csatlakozni, három NuGet-csomagot kell hozzáadnia a projekthez az alábbi módszerek egyikével:

  1. A Megoldáskezelő ablakban kattintson a jobb gombbal a projekt Függőségek csomópontra, és válassza a NuGet-csomagok kezeléselehetőséget.

  2. Az eredményként kapott ablakban keresse meg az EntityFrameworkCore-t. Keresse meg és telepítse a következő csomagokat:

  • Microsoft.EntityFrameworkCore: Alapvető Entity Framework Core-funkciókat biztosít
  • Microsoft.EntityFrameworkCore.SqlServer: További összetevőket biztosít a logikai kiszolgálóhoz való csatlakozáshoz
  • Microsoft.EntityFrameworkCore.Design: Támogatást nyújt az Entity Framework migrálásainak futtatásához
  • Microsoft.EntityFrameworkCore.Tools: Támogatja a Visual Studio Package Manager konzol eszközkészletét (csak PowerShell esetén)
  • Swashbuckle.AspNetCore: Nem kötelező – támogatja a SwaggerUI és az alkalmazásvégpontok közötti interakciót

Az Azure SQL Database-hez való csatlakozáshoz használt kód hozzáadása

Az Entity Framework Core könyvtárak a Microsoft.Data.SqlClient és Azure.Identity könyvtárakra támaszkodnak az Azure SQL Database-hez való jelszó nélküli kapcsolatok megvalósításához. A Azure.Identity kódtár egy DefaultAzureCredential nevű osztályt biztosít, amely az Azure-ba történő jelszó nélküli hitelesítést kezeli.

DefaultAzureCredential több hitelesítési módszert támogat, és meghatározza, hogy melyiket használja futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (helyi és éles környezetben) környezetspecifikus kód implementálása nélkül. Az Azure Identity-kódtár áttekintése ismerteti azokat a sorrendeket és helyeket, amelyeken DefaultAzureCredential hitelesítő adatokat keres.

Hajtsa végre az alábbi lépéseket az Azure SQL Database-hez való csatlakozáshoz az Entity Framework Core és a mögöttes DefaultAzureCredential osztály használatával:

  1. Adjon hozzá egy szakaszt ConnectionStrings a appsettings.Development.json fájlhoz, hogy az megfeleljen az alábbi kódnak. Cserélje le <server>.database.windows.net a csatlakoztatni kívánt jelszó nélküli adatbázis-kiszolgáló nevét és <database> az adatbázis nevét.

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

    Megjegyzés:

    Ne felejtse el frissíteni az adatbázis-kapcsolat sztringjének <your database-server-name> és <your-database-name> helyőrzőit. A jelszó nélküli kapcsolati sztringek biztonságosan véglegesítik a forrásvezérlést, mivel nem tartalmaznak titkos kulcsokat, például felhasználóneveket, jelszavakat vagy hozzáférési kulcsokat.

    A jelszó nélküli kapcsolati sztring olyan konfigurációs Authentication=Active Directory Default értéket tartalmaz, amely lehetővé teszi az Entity Framework Core számára DefaultAzureCredential az Azure-szolgáltatásokhoz való csatlakozást. Amikor az alkalmazás helyileg fut, azzal a felhasználóval hitelesíti magát, akivel bejelentkezett a Visual Studióba. Miután az alkalmazást üzembe helyezik az Azure-ban, ugyanaz a kód felderíti és alkalmazza a társított felügyelt identitást, amit később fogsz konfigurálni.

  2. Cserélje le a Program.cs fájl tartalmát a következő kódra:

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

    Az előző kód a következő lépéseket kezeli:

    • Lekéri a jelszó nélküli adatbázis kapcsolati sztringet a appsettings.Development.json helyi fejlesztési fájlból vagy az üzemeltetett éles forgatókönyvek környezeti változóiból.
    • Regisztrálja az Entity Framework Core DbContext osztályt a .NET függőséginjektálási tárolóval. Az Entity Framework Core DbContext dokumentációjában olvashat bővebben.
    • A .NET 9.0 OpenAPI-támogatást a SwaggerUI-val konfigurálja, hogy olyan felhasználói felületet biztosítson, amellyel az alkalmazásvégpontok és az adatbázis kezelhető.
    • Végpontokat ad hozzá az adatbázis entitásainak lekéréséhez és hozzáadásához.
    • Egy osztályt Person határoz meg, amely egyetlen rekordot jelöl az Persons adatbázistáblában, és azt az PersonDbContext osztályt, amelyet a .NET függőséginjektálási tárolóban regisztráltak.

Az adatbázis létrehozásához futtassa a migrálásokat

Az Entity Framework Core használatával végrehajtott migráció szükséges ahhoz, hogy az adatbázis séma megfeleljen az adatmodellnek. Az áttelepítések létrehozhatnak és növekményesen frissíthetnek egy adatbázissémát, hogy szinkronban maradjanak az alkalmazás adatmodelljével. Erről a mintáról a migrálások áttekintésében tudhat meg többet.

  1. Nyisson meg egy terminálablakot a projekt gyökeréhez.

  2. Futtassa a következő parancsot egy olyan kezdeti migrálás létrehozásához, amely létrehozhatja az adatbázist:

    Add-Migration InitialCreate
    

  1. A Migrations mappának kell megjelennie a projektkönyvtárban, valamint egy fájlnak, amely előtt egyedi számok vannak hozzáfűzve InitialCreate. A migrálás futtatásával hozza létre az adatbázist a következő paranccsal, és az Entity Framework Core eszközkészlet létrehozza az azure-ban az PersonDbContext osztály által definiált adatbázissémát.

    Update-Database
    

Az alkalmazás helyi tesztelése

Az alkalmazás készen áll a helyi tesztelésre. Győződjön meg arról, hogy ugyanazzal a fiókkal jelentkezett be a Visual Studióba vagy az Azure CLI-be, mint az adatbázis rendszergazdája.

  1. Az API-projekt elindításához nyomja le a Visual Studio tetején található Futtatás gombot.

  2. A Swagger felhasználói felületén bontsa ki a POST metódust, és válassza a Kipróbáláslehetőséget.

  3. Módosítsa a JSON-mintát úgy, hogy az tartalmazza az utónév és a családnév értékeit. Válassza a Végrehajtás lehetőséget, ha új rekordot szeretne hozzáadni az adatbázishoz. Az API sikeres választ ad vissza.

    Képernyőkép az API teszteléséről.

  4. Bontsa ki a GET metódust a Swagger felhasználói felületén, és válassza a Kipróbálás lehetőséget. Válassza a Végrehajtáslehetőséget, és a rendszer visszaadja az imént létrehozott személyt.

Üzembe helyezés az Azure App Service-ben

Az alkalmazás készen áll az Azure-ban való üzembe helyezésre. A Visual Studio létrehozhat egy Azure App Service-t, és egyetlen munkafolyamatban telepítheti az alkalmazást.

  1. Győződjön meg arról, hogy az alkalmazás le van állítva, és sikeresen működik.

  2. A Visual Studio Megoldáskezelő ablakában kattintson a jobb gombbal a felső szintű projektcsomópontra, és válassza a Közzététellehetőséget.

  3. A közzétételi párbeszédpanelen válassza ki az üzembehelyezési célként az Azure lehetőséget, majd válassza a Továbbgombot.

  4. Az adott célhoz válassza Azure App Service (Windows)lehetőséget, majd válassza a Továbblehetőséget.

  5. A zöld + ikont választva hozzon létre egy új App Service-t, amely üzembe helyezhető, és adja meg a következő értékeket:

    • Név: Hagyja meg az alapértelmezett értéket.
    • Előfizetés neve: Válassza ki azt az előfizetést, amelyikhez üzembe kíván helyezni.
    • erőforráscsoport: Válassza Új lehetőséget, és hozzon létre egy új, msdocs-dotnet-sqlnevű erőforráscsoportot.
    • Tárhelycsomag: Válassza Új lehetőséget a tárhelycsomag párbeszédpanel megnyitásához. Hagyja meg az alapértelmezett értékeket, és válassza OKlehetőséget.
    • Az eredeti párbeszédpanel bezárásához válassza a lehetőséget. A Visual Studio létrehozza az App Service-erőforrást az Azure-ban.

    Képernyőkép a Visual Studióval való üzembe helyezésről.

  6. Az erőforrás létrehozása után győződjön meg arról, hogy kiválasztja az appszolgáltatások listájában, majd válassza a Tovább gombot.

  7. Az API Management lépésben jelölje be alul a Lépés kihagyása jelölőnégyzetet, majd válassza a Befejezés lehetőséget.

  8. Válassza a Közzététel lehetőséget a közzétételi profil összesítőjének jobb felső sarkában az alkalmazás Azure-ban való üzembe helyezéséhez.

Amikor az üzembe helyezés befejeződik, a Visual Studio elindítja a böngészőt a üzemeltetett alkalmazás megjelenítéséhez. Az üzenetnek az Hello world alapértelmezett végpontról kell megjelennie. Jelenleg azonban az adatbázisvégpontok nem működnek megfelelően az Azure-ban. Az adatok lekéréséhez továbbra is konfigurálnia kell az App Service és az SQL-adatbázis közötti biztonságos kapcsolatot.

Az App Service csatlakoztatása az Azure SQL Database-hez

Az App Service-példány azure SQL Database-hez való csatlakoztatásához a következő lépések szükségesek:

  1. Felügyelt identitás létrehozása az App Service-hez. Az Microsoft.Data.SqlClient alkalmazásban található kódtár automatikusan felderíti a felügyelt identitást, ahogyan a helyi Visual Studio-felhasználót is.
  2. Hozzon létre egy SQL-adatbázis-felhasználót, és társítsa azt az App Service által felügyelt identitáshoz.
  3. Sql-szerepkörök hozzárendelése az adatbázis-felhasználóhoz, amely lehetővé teszi az olvasási, írási és potenciálisan egyéb engedélyeket.

A lépések végrehajtásához több eszköz is rendelkezésre áll:

A Service Connector egy olyan eszköz, amely leegyszerűsíti a hitelesített kapcsolatokat az Azure különböző szolgáltatásai között. A Service Connector jelenleg támogatja az App Service sql-adatbázishoz való csatlakoztatását az Azure CLI jelszó nélküli bővítményével.

  1. Telepítse vagy frissítse a Service Connector jelszó nélküli bővítményét:

    az extension add --name serviceconnector-passwordless --upgrade
    
  2. Futtassa a az webapp connection create sql parancsot a webalkalmazás adatbázishoz való csatlakoztatásához egy rendszer által hozzárendelt felügyelt identitás használatával. Cserélje le a helyőrzőket a megfelelő értékekre:

    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
    

A Service Connector által végzett módosításokat az App Service beállításai között ellenőrizheti.

  1. Navigáljon az App Service Identity oldalára. A Rendszer által hozzárendelt lapon az Állapot beállítása legyen On. Ez az érték azt jelenti, hogy a rendszer által hozzárendelt felügyelt identitás engedélyezve lett az alkalmazás számára.

  2. Lépjen az App Service Konfigurációs lapjára. A Kapcsolati sztringek lapon egy kapcsolati sztringnek kell megjelennie AZURE_SQL_CONNECTIONSTRING. Válassza ki a Kattintson a megjelenítéshez szöveget a generált jelszó nélküli kapcsolat karakterláncának megtekintéséhez. Ennek a kapcsolati sztringnek a neve igazodik az alkalmazásban konfigurálthoz, így az automatikusan felderítve lesz az Azure-ban való futtatáskor.

Fontos

Bár ez a megoldás egyszerű megközelítést biztosít az első lépésekhez, a vállalati éles környezetek esetében nem ajánlott eljárás. Ezekben az esetekben az alkalmazásnak nem szabad minden műveletet egyetlen emelt szintű identitással végrehajtania. Próbálja meg implementálni a minimális jogosultság elvét úgy, hogy több identitást konfigurál bizonyos feladatokhoz adott engedélyekkel. További információ az adatbázis-szerepkörök és a biztonság konfigurálásáról:

Az üzembe helyezett alkalmazás tesztelése

Keresse meg az alkalmazás URL-címét, és ellenőrizze, hogy működik-e a kapcsolat az Azure SQL Database-hez. Az alkalmazás URL-címét az App Service áttekintési oldalán találja. Fűzze hozzá a /person elérési utat az URL végéhez, hogy elérje ugyanazt a végpontot, amit helyben tesztelt.

A helyileg létrehozott személynek meg kell jelennie a böngészőben. Gratulálunk, az alkalmazás mostantól helyi és üzemeltetett környezetben is csatlakozik az Azure SQL Database-hez.

Az erőforrások rendbetétele

Ha befejezte az Azure SQL Database használatát, törölje az erőforrást a nem tervezett költségek elkerülése érdekében.

  1. Az Azure Portal keresősávjában keressen Azure SQL-, és válassza ki a megfelelő találatot.

  2. Keresse meg és jelölje ki az adatbázist az adatbázisok listájában.

  3. Az Azure SQL Database Áttekintés lapján válassza a Törléslehetőséget.

  4. Biztosan törölni szeretné az Azure... a lapon, amely megnyílik, írja be az adatbázis nevét a művelet megerősítéséhez, majd válassza a Törléslehetőséget.

Megjegyzés:

Ha üzembe helyezte a mintaalkalmazást az Azure-ban, a nem kívánt költségek elkerülése érdekében mindenképpen keresse meg és törölje az App Service-erőforrást.