Bagikan melalui


Koneksi ke dan mengkueri Azure SQL Database menggunakan .NET dan Entity Framework Core

Berlaku untuk:Azure SQL Database

Mulai cepat ini menjelaskan cara menyambungkan aplikasi ke database di Azure SQL Database dan melakukan kueri menggunakan .NET dan Entity Framework Core. Mulai cepat ini mengikuti pendekatan tanpa kata sandi yang direkomendasikan untuk menyambungkan ke database. Anda dapat mempelajari lebih lanjut tentang koneksi tanpa kata sandi di hub tanpa kata sandi.

Prasyarat

Mengonfigurasi server database

Koneksi aman tanpa kata sandi ke Azure SQL Database memerlukan konfigurasi database tertentu. Verifikasi pengaturan berikut di server logis Anda di Azure untuk menyambungkan dengan benar ke Azure SQL Database di lingkungan lokal dan yang dihosting:

  1. Untuk koneksi pengembangan lokal, pastikan server logis Anda dikonfigurasi untuk memungkinkan alamat IP komputer lokal Anda dan layanan Azure lainnya tersambung:

    • Navigasi ke halaman Jaringan server Anda.

    • Alihkan tombol radio Jaringan terpilih untuk menampilkan opsi konfigurasi tambahan.

    • Pilih Tambahkan alamat IPv4 klien Anda(xx.xx.xx.xx) untuk menambahkan aturan firewall yang akan mengaktifkan koneksi dari alamat IPv4 komputer lokal Anda. Atau, Anda juga dapat memilih + Tambahkan aturan firewall untuk memasukkan alamat IP tertentu pilihan Anda.

    • Pastikan kotak centang Izinkan layanan dan sumber daya Azure untuk mengakses server ini dipilih.

      Cuplikan layar memperlihatkan cara mengonfigurasi aturan firewall.

      Peringatan

      Mengaktifkan pengaturan Izinkan layanan dan sumber daya Azure untuk mengakses server ini bukanlah praktik keamanan yang direkomendasikan untuk skenario produksi. Aplikasi nyata harus menerapkan pendekatan yang lebih aman, seperti pembatasan firewall yang lebih kuat atau konfigurasi jaringan virtual.

      Anda bisa membaca selengkapnya tentang konfigurasi keamanan database pada sumber daya berikut:

  2. Server juga harus mengaktifkan autentikasi Microsoft Entra dan memiliki akun admin Microsoft Entra yang ditetapkan. Untuk koneksi pengembangan lokal, akun admin Microsoft Entra harus menjadi akun yang juga dapat Anda masuk ke Visual Studio atau Azure CLI dengan secara lokal. Anda dapat memverifikasi apakah server Anda mengaktifkan autentikasi Microsoft Entra di halaman ID Microsoft Entra server logis Anda.

    Cuplikan layar memperlihatkan cara mengaktifkan autentikasi Microsoft Entra.

  3. Jika Anda menggunakan akun Azure pribadi, pastikan Anda memiliki penyiapan Microsoft Entra dan dikonfigurasi untuk Azure SQL Database untuk menetapkan akun Anda sebagai admin server. Jika Anda menggunakan akun perusahaan, ID Microsoft Entra kemungkinan besar sudah dikonfigurasi untuk Anda.

Membuat proyek

Langkah-langkah di bagian ini membuat .NET Minimal Web API dengan menggunakan .NET CLI atau Visual Studio 2022.

  1. Di bilah menu Visual Studio, navigasikan ke File>Proyek Baru>...

  2. Di jendela dialog, masukkan ASP.NET ke dalam kotak pencarian templat proyek dan pilih hasil ASP.NET Core Web API. Pilih Berikutnya di bagian bawah dialog.

  3. Untuk Nama Proyek, masukkan DotNetSQL. Biarkan nilai default di bidang lain dan pilih Berikutnya.

  4. Untuk Kerangka Kerja, pilih .NET 7.0 dan hapus centang Gunakan pengontrol (hapus centang untuk menggunakan API minimal). Mulai cepat ini menggunakan templat API Minimal untuk menyederhanakan pembuatan dan konfigurasi titik akhir.

  5. Pilih Buat. Proyek baru terbuka di dalam lingkungan Visual Studio.

Menambahkan Entity Framework Core ke proyek

Untuk menyambungkan ke Azure SQL Database dengan menggunakan .NET dan Entity Framework Core, Anda perlu menambahkan tiga paket NuGet ke proyek Anda menggunakan salah satu metode berikut:

  1. Di jendela Penjelajah Solusi, klik kanan simpul Dependensi proyek dan pilih Kelola Paket NuGet.

  2. Di jendela yang dihasilkan, cari EntityFrameworkCore. Temukan dan instal paket berikut:

  • Microsoft.EntityFrameworkCore: Menyediakan fungsionalitas Core Kerangka Kerja Entitas penting
  • Microsoft.EntityFrameworkCore.SqlServer: Menyediakan komponen tambahan untuk terhubung ke server logis
  • Microsoft.EntityFrameworkCore.Design: Menyediakan dukungan untuk menjalankan migrasi Kerangka Kerja Entitas

Atau, Anda juga dapat menjalankan Install-Package cmdlet di jendela Package Manager Console :

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

Menambahkan kode untuk menyambungkan ke Azure SQL Database

Pustaka Entity Framework Core mengandalkan Microsoft.Data.SqlClient pustaka dan Azure.Identity untuk menerapkan koneksi tanpa kata sandi ke Azure SQL Database. Azure.Identity Pustaka menyediakan kelas yang disebut DefaultAzureCredential yang menangani autentikasi tanpa kata sandi ke Azure.

DefaultAzureCredential mendukung beberapa metode autentikasi dan menentukan mana yang akan digunakan pada runtime. Pendekatan ini memungkinkan aplikasi Anda menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda (lokal vs. produksi) tanpa menerapkan kode spesifik per lingkungan. Gambaran umum pustaka Azure Identity menjelaskan urutan dan lokasi di mana DefaultAzureCredential mencari kredensial.

Selesaikan langkah-langkah berikut untuk menyambungkan ke Azure SQL Database menggunakan Entity Framework Core dan kelas yang mendasar DefaultAzureCredential :

  1. ConnectionStrings Tambahkan bagian ke appsettings.Development.json file sehingga cocok dengan kode berikut. Ingatlah untuk memperbarui <your database-server-name> tempat penampung dan <your-database-name> .

    string koneksi tanpa kata sandi menyertakan nilai Authentication=Active Directory Defaultkonfigurasi , yang memungkinkan Entity Framework Core untuk digunakan DefaultAzureCredential untuk menyambungkan ke layanan Azure. Saat aplikasi berjalan secara lokal, aplikasi akan mengautentikasi dengan pengguna yang Anda gunakan untuk masuk ke Visual Studio. Setelah aplikasi disebarkan ke Azure, kode yang sama menemukan dan menerapkan identitas terkelola yang terkait dengan aplikasi yang dihosting, yang akan Anda konfigurasi nanti.

    Catatan

    String koneksi tanpa kata sandi aman untuk berkomitmen pada kontrol sumber, karena tidak berisi rahasia apa pun seperti nama pengguna, kata sandi, atau kunci akses.

    {
        "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. Tambahkan kode berikut ke file di Program.cs atas baris kode yang berbunyi var app = builder.Build();. Kode ini melakukan konfigurasi berikut:

    • Mengambil database tanpa kata sandi string koneksi dari appsettings.Development.json file untuk pengembangan lokal, atau dari variabel lingkungan untuk skenario produksi yang dihosting.

    • Mendaftarkan kelas Entity Framework Core DbContext dengan kontainer injeksi dependensi .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. Tambahkan titik akhir berikut ke bagian Program.cs bawah file di atas app.Run() untuk mengambil dan menambahkan entitas dalam database menggunakan PersonDbContext kelas .

    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();
    

    Terakhir, tambahkan Person kelas dan PersonDbContext ke bagian Program.cs bawah file. Kelas Orang mewakili satu rekaman dalam tabel database Persons . Kelas PersonDbContext mewakili database Person dan memungkinkan Anda melakukan operasi di atasnya melalui kode. Anda dapat membaca selengkapnya tentang DbContext dalam dokumentasi Memulai untuk Core Kerangka Kerja Entitas.

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

Menjalankan migrasi untuk membuat database

Untuk memperbarui skema database agar sesuai dengan model data Anda menggunakan Entity Framework Core, Anda harus menggunakan migrasi. Migrasi dapat membuat dan memperbarui skema database secara bertahap agar tetap sinkron dengan model data aplikasi Anda. Anda dapat mempelajari selengkapnya tentang pola ini dalam gambaran umum migrasi.

  1. Buka jendela terminal ke akar proyek Anda.

  2. Jalankan perintah berikut untuk menghasilkan migrasi awal yang dapat membuat database:

    Add-Migration InitialCreate
    
  3. Folder Migrations akan muncul di direktori proyek Anda, bersama dengan file yang disebut InitialCreate dengan angka unik yang telah ditambahkan sebelumnya. Jalankan migrasi untuk membuat database menggunakan perintah berikut:

    Update-Database
    

    Alat Entity Framework Core akan membuat skema database di Azure yang PersonDbContext ditentukan oleh kelas .

Uji aplikasi secara lokal

Aplikasi ini siap untuk diuji secara lokal. Pastikan Anda masuk ke Visual Studio atau Azure CLI dengan akun yang sama dengan yang Anda tetapkan sebagai admin untuk database Anda.

  1. Tekan tombol jalankan di bagian atas Visual Studio untuk meluncurkan proyek API.

  2. Pada halaman UI Swagger, perluas metode POST dan pilih Coba.

  3. Ubah contoh JSON untuk menyertakan nilai untuk nama depan dan belakang. Pilih Jalankan untuk menambahkan rekaman baru ke database. API mengembalikan respons yang berhasil.

    Cuplikan layar memperlihatkan cara menguji API.

  4. Perluas metode GET pada halaman UI Swagger dan pilih Coba. Pilih Jalankan, dan orang yang baru saja Anda buat dikembalikan.

Menyebarkan ke Azure App Service

Aplikasi ini siap disebarkan ke Azure. Visual Studio dapat membuat Azure App Service dan menyebarkan aplikasi Anda dalam satu alur kerja.

  1. Pastikan aplikasi dihentikan dan berhasil dibuat.

  2. Di jendela Penjelajah Solusi Visual Studio, klik kanan pada simpul proyek tingkat atas dan pilih Terbitkan.

  3. Dalam dialog penerbitan, pilih Azure sebagai target penyebaran, lalu pilih Berikutnya.

  4. Untuk target tertentu, pilih Azure App Service (Windows), lalu pilih Berikutnya.

  5. Pilih ikon hijau + untuk membuat App Service baru untuk disebarkan dan masukkan nilai berikut:

    • Nama: Biarkan nilai default.

    • Nama langganan: Pilih langganan yang akan disebarkan.

    • Grup sumber daya: Pilih Baru dan buat grup sumber daya baru yang disebut msdocs-dotnet-sql.

    • Paket Hosting: Pilih Baru untuk membuka dialog paket hosting. Biarkan nilai default dan pilih OK.

    • Pilih Buat untuk menutup dialog asli. Visual Studio membuat sumber daya App Service di Azure.

      Cuplikan layar memperlihatkan cara menyebarkan dengan Visual Studio.

  6. Setelah sumber daya dibuat, pastikan sumber daya dipilih dalam daftar layanan aplikasi, lalu pilih Berikutnya.

  7. Pada langkah API Management, pilih kotak centang Lewati langkah ini di bagian bawah lalu pilih Selesai.

  8. Pilih Terbitkan di kanan atas ringkasan profil penerbitan untuk menyebarkan aplikasi ke Azure.

Setelah penyebaran selesai, Visual Studio meluncurkan browser untuk menampilkan aplikasi yang dihosting, tetapi pada titik ini aplikasi tidak berfungsi dengan benar di Azure. Anda masih perlu mengonfigurasi koneksi aman antara App Service dan database SQL untuk mengambil data Anda.

Koneksi App Service ke Azure SQL Database

Langkah-langkah berikut diperlukan untuk menyambungkan instans App Service ke Azure SQL Database:

  1. Buat identitas terkelola untuk App Service. Pustaka Microsoft.Data.SqlClient yang disertakan dalam aplikasi Anda akan secara otomatis menemukan identitas terkelola, sama seperti menemukan pengguna Visual Studio lokal Anda.
  2. Buat pengguna database SQL dan kaitkan dengan identitas terkelola App Service.
  3. Tetapkan peran SQL ke pengguna database yang memungkinkan izin baca, tulis, dan berpotensi lainnya.

Ada beberapa alat yang tersedia untuk menerapkan langkah-langkah ini:

Service Koneksi or adalah alat yang menyederhanakan koneksi terautentikasi antara berbagai layanan di Azure. Service Koneksi or saat ini mendukung menyambungkan App Service ke database SQL melalui Azure CLI menggunakan az webapp connection create sql perintah . Perintah tunggal ini menyelesaikan tiga langkah yang disebutkan di atas untuk Anda.

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

Anda dapat memverifikasi perubahan yang dibuat oleh Koneksi Layanan pada pengaturan App Service.

  1. Navigasi ke halaman Identitas untuk App Service Anda. Di bawah tab Sistem yang ditetapkan, Status harus diatur ke Aktif. Nilai ini berarti bahwa identitas terkelola yang ditetapkan sistem diaktifkan untuk aplikasi Anda.

  2. Navigasi ke halaman Konfigurasi untuk App Service Anda. Di bawah tab string Koneksi ion, Anda akan melihat string koneksi yang disebut AZURE_SQL_CONNECTIONSTRING. Pilih Klik untuk menampilkan teks nilai untuk melihat string koneksi tanpa kata sandi yang dihasilkan. Nama string koneksi ini selaras dengan yang Anda konfigurasi di aplikasi Anda, sehingga akan ditemukan secara otomatis saat berjalan di Azure.

Penting

Meskipun solusi ini memberikan pendekatan sederhana untuk memulai, ini bukan praktik terbaik untuk lingkungan produksi perusahaan. Dalam skenario tersebut, aplikasi tidak boleh melakukan semua operasi menggunakan satu identitas yang ditingkatkan. Anda harus mencoba menerapkan prinsip hak istimewa paling sedikit dengan mengonfigurasi beberapa identitas dengan izin tertentu untuk tugas tertentu.

Anda dapat membaca selengkapnya tentang mengonfigurasi peran database dan keamanan pada sumber daya berikut:

Tutorial: Mengamankan database pada Azure SQL Database

Mengotorisasi akses database ke SQL Database

Menguji aplikasi yang disebarkan

Telusuri ke URL aplikasi untuk menguji bahwa koneksi ke Azure SQL Database berfungsi. Anda dapat menemukan URL aplikasi Anda di halaman ringkasan App Service. Tambahkan /person jalur ke akhir URL untuk menelusuri ke titik akhir yang sama dengan yang Anda uji secara lokal.

Orang yang Anda buat secara lokal harus ditampilkan di browser. Selamat! Aplikasi Anda sekarang terhubung ke Azure SQL Database di lingkungan lokal dan yang dihosting.

Membersihkan sumber daya

Setelah selesai bekerja dengan Azure SQL Database, hapus sumber daya untuk menghindari biaya yang tidak diinginkan.

  1. Di bilah pencarian portal Azure, cari Azure SQL dan pilih hasil yang cocok.

  2. Temukan dan pilih database Anda dalam daftar database.

  3. Pada halaman Gambaran Umum Azure SQL Database Anda, pilih Hapus.

  4. Pada halaman Azure yang Anda yakin ingin hapus... yang terbuka, ketik nama database Anda untuk mengonfirmasi, lalu pilih Hapus.