Bagikan melalui


String Koneksi

Sebagian besar penyedia database memerlukan string koneksi untuk menyambungkan ke database. String koneksi:

  • Dapat berisi informasi sensitif yang perlu dilindungi.
  • Mungkin perlu berubah saat aplikasi berpindah ke lingkungan yang berbeda, seperti pengembangan, pengujian, dan produksi.

Untuk informasi selengkapnya, lihat Mengamankan alur autentikasi

Inti ASP.NET

Konfigurasi ASP.NET Core dapat menyimpan string koneksi dengan berbagai penyedia:

Peringatan

Rahasia tidak boleh ditambahkan ke file konfigurasi.

Misalnya, alat Secret Manager dapat menyimpan kata sandi database. Saat perancah dan menggunakan Manajer rahasia, string koneksi terdiri dari Name=<database-alias>.

Lihat bagian Konfigurasi dari dokumentasi ASP.NET Core untuk informasi selengkapnya.

dotnet user-secrets init
dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"

Kemudian, dalam perancah, gunakan string koneksi yang terdiri dari Name=<database-alias>.

dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer

Peringatan

Artikel ini menggunakan database lokal yang tidak mengharuskan pengguna untuk diautentikasi. Aplikasi produksi harus menggunakan alur autentikasi paling aman yang tersedia. Untuk informasi selengkapnya tentang autentikasi untuk aplikasi pengujian dan produksi yang disebarkan, lihat Mengamankan alur autentikasi.

Contoh berikut menunjukkan string koneksi yang disimpan di appsettings.json.

{
  "ConnectionStrings": {
    "BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
  },
}

Konteks biasanya dikonfigurasi Program.cs dengan string koneksi dibaca dari konfigurasi. Perhatikan metode GetConnectionString mencari nilai konfigurasi yang kuncinya adalah ConnectionStrings:<connection string name>. GetConnectionStringmemerlukan namespace Microsoft.Extensions.Configuration.

var conString = builder.Configuration.GetConnectionString("BloggingContext") ??
     throw new InvalidOperationException("Connection string 'BloggingContext'" +
    " not found.");
builder.Services.AddDbContext<BloggingContext>(options =>
    options.UseSqlServer(conString));

Aplikasi WinForms & WPF

Aplikasi WinForms, WPF, dan ASP.NET 4 memiliki pola string koneksi yang dicoba dan diuji. string koneksi harus ditambahkan ke file aplikasi App.config Anda, atau Web.config saat menggunakan ASP.NET. String koneksi yang berisi informasi sensitif, seperti nama pengguna dan kata sandi, harus melindungi konten file konfigurasi menggunakan Konfigurasi Terproteksi.

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <connectionStrings>
    <add name="BloggingDatabase"
         connectionString="Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" />
  </connectionStrings>
</configuration>

Tip

Pengaturan providerName tidak diperlukan pada string koneksi EF Core yang disimpan di App.config karena penyedia database dikonfigurasi melalui kode.

Anda kemudian dapat membaca string koneksi menggunakan ConfigurationManager API dalam metode konteks OnConfiguring Anda. Anda mungkin perlu menambahkan referensi ke perakitan System.Configuration kerangka kerja untuk dapat menggunakan API ini.

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
      optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["BloggingDatabase"].ConnectionString);
    }
}

Universal Windows Platform (UWP)

String koneksi dalam aplikasi UWP biasanya adalah koneksi SQLite yang hanya menentukan nama file lokal. Mereka biasanya tidak berisi informasi sensitif, dan tidak perlu diubah saat aplikasi disebarkan. Dengan demikian, string koneksi ini biasanya tidak masalah untuk dibiarkan dalam kode, seperti yang ditunjukkan di bawah ini. Jika Anda ingin memindahkannya keluar dari kode, UWP mendukung konsep pengaturan, lihat bagian Pengaturan Aplikasi dari dokumentasi UWP untuk detailnya.

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
            optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}