Bağlantı Dizeleri
Çoğu veritabanı sağlayıcısı veritabanına bağlanmak için bir bağlantı dizesi gerektirir. bağlantı dizesi:
- Korunması gereken hassas bilgiler içerebilir.
- Uygulamanın geliştirme, test ve üretim gibi farklı ortamlara geçtiğinde değişmesi gerekebilir.
Daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları
ASP.NET Core
ASP.NET Core yapılandırması çeşitli sağlayıcılarla bağlantı dizesi depolayabilir:
appsettings.Development.json
veyaappsettings.json
dosyasında.- Ortam değişkeninde
- Azure Key Vault kullanma
- Gizli Dizi Yöneticisi aracını kullanma
Uyarı
Gizli diziler yapılandırma dosyalarına hiçbir zaman eklenmemelidir.
Örneğin, Gizli Dizi Yöneticisi aracı veritabanı parolasını depolayabilir. gizli dizi yöneticisini oluştururken ve kullanırken, bir bağlantı dizesi oluşurName=<database-alias>
.
Daha fazla bilgi için ASP.NET Core belgelerinin Yapılandırma bölümüne bakın.
dotnet user-secrets init
dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"
Ardından, iskelede, içeren Name=<database-alias>
bir bağlantı dizesi kullanın.
dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer
Uyarı
Bu makalede, kullanıcının kimliğinin doğrulanması gerekmeyen bir yerel veritabanı kullanılır. Üretim uygulamaları kullanılabilir en güvenli kimlik doğrulama akışını kullanmalıdır. Dağıtılan test ve üretim uygulamaları için kimlik doğrulaması hakkında daha fazla bilgi için bkz . Güvenli kimlik doğrulama akışları.
Aşağıdaki örnekte, içinde depolanan bağlantı dizesi gösterilmektedirappsettings.json
.
{
"ConnectionStrings": {
"BloggingDatabase": "Server=(localdb)\\mssqllocaldb;Database=EFGetStarted.ConsoleApp.NewDb;Trusted_Connection=True;"
},
}
Bağlam genellikle yapılandırmadan okunan bağlantı dizesi ile yapılandırılırProgram.cs
. GetConnectionString yöntemi anahtarı ConnectionStrings:<connection string name>
olan bir yapılandırma değeri arar. GetConnectionString
Microsoft.Extensions.Configuration ad alanını gerektirir.
var conString = builder.Configuration.GetConnectionString("BloggingContext") ??
throw new InvalidOperationException("Connection string 'BloggingContext'" +
" not found.");
builder.Services.AddDbContext<BloggingContext>(options =>
options.UseSqlServer(conString));
WinForms & WPF Uygulamaları
WinForms, WPF ve ASP.NET 4 uygulamalarının denenmiş ve test edilmiş bir bağlantı dizesi deseni vardır. bağlantı dizesi uygulamanızın App.config
dosyasına veya Web.config
ASP.NET kullanılırken eklenmelidir. Kullanıcı adı ve parola gibi hassas bilgileri içeren bağlantı dizesi, Korumalı Yapılandırma'yı kullanarak yapılandırma dosyasının içeriğini korumalı olmalıdır.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="BloggingDatabase"
connectionString="Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" />
</connectionStrings>
</configuration>
İpucu
providerName
Veritabanı sağlayıcısı kod aracılığıyla yapılandırıldığından, ayar App.config'de depolanan EF Core bağlantı dizesi gerekli değildir.
Ardından bağlamınızın OnConfiguring
yöntemindeki API'yi kullanarak ConfigurationManager
bağlantı dizesi okuyabilirsiniz. Bu API'yi kullanabilmek için System.Configuration
çerçeve derlemesine bir başvuru eklemeniz gerekebilir.
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);
}
}
Evrensel Windows Platformu (UWP)
UWP uygulamasındaki bağlantı dizeleri genellikle yalnızca yerel bir dosya adı belirten bir SQLite bağlantısıdır. Bunlar genellikle hassas bilgiler içermez ve uygulama dağıtılırken değiştirilmesi gerekmez. Bu nedenle, bu bağlantı dizesi genellikle aşağıda gösterildiği gibi kodda bırakılabilir. Bunları kod dışına taşımak istiyorsanız UWP, ayarlar kavramını destekler. Ayrıntılar için UWP belgelerinin Uygulama Ayarları bölümüne bakın.
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");
}
}