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