Bagikan melalui


String Koneksi

Sebagian besar penyedia database memerlukan beberapa bentuk string koneksi untuk menyambungkan ke database. Terkadang string koneksi ini berisi informasi sensitif yang perlu dilindungi. Anda mungkin juga perlu mengubah string koneksi saat memindahkan aplikasi antar lingkungan, seperti pengembangan, pengujian, dan produksi.

Inti ASP.NET

Dalam ASP.NET Core, sistem konfigurasi sangat fleksibel, dan string koneksi dapat disimpan dalam appsettings.json, variabel lingkungan, penyimpanan rahasia pengguna, atau sumber konfigurasi lain. Lihat bagian Konfigurasi dari dokumentasi ASP.NET Core untuk detail selengkapnya.

Misalnya, Anda dapat menggunakan alat Secret Manager untuk menyimpan kata sandi database Anda dan kemudian, dalam perancah, menggunakan string koneksi yang hanya terdiri dari Name=<database-alias>.

dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"
dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer

Atau contoh berikut menunjukkan string koneksi yang disimpan di appsettings.json.

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

Kemudian konteks biasanya dikonfigurasi dengan Startup.cs string koneksi dibaca dari konfigurasi. GetConnectionString() Perhatikan metode mencari nilai konfigurasi yang kuncinya adalah ConnectionStrings:<connection string name>. Anda perlu mengimpor namespace Microsoft.Extensions.Configuration untuk menggunakan metode ekstensi ini.

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<BloggingContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase")));
}

Aplikasi WinForms & WPF

Aplikasi WinForms, WPF, dan ASP.NET 4 memiliki pola string koneksi yang dicoba dan diuji. string koneksi harus ditambahkan ke file App.config aplikasi Anda (Web.config jika Anda menggunakan ASP.NET). Jika string koneksi Anda berisi informasi sensitif, seperti nama pengguna dan kata sandi, Anda dapat 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 ion 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 App Pengaturan 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");
    }
}