Bağlantı Dizeleri

Çoğu veritabanı sağlayıcısı, veritabanına bağlanmak için bir tür bağlantı dizesi gerektirir. Bazen bu bağlantı dizesi korunması gereken hassas bilgiler içerir. Ayrıca, uygulamalarınızı geliştirme, test ve üretim gibi ortamlar arasında taşıma sırasında bağlantı dizesini de değiştirmeniz gerekir.

ASP.NET Core

Bu ASP.NET Core yapılandırma sistemi çok esnektir ve bağlantı dizesi , bir ortam değişkeni, kullanıcı gizli dizisi deposu veya başka bir appsettings.json yapılandırma kaynağında depolanmış olabilir. Daha fazla bilgi için ASP.NET Core yapılandırma bölümüne bakın.

Örneğin, veritabanı parolanızı depolamak için Gizli Dizi Yöneticisi aracını kullanabilir ve ardından iskelede yalnızca içeren bir bağlantı dizesi kullanabilirsiniz.

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

Veya aşağıdaki örnekte içinde depolanan bağlantı dizesi de yer appsettings.json alır.

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

Daha sonra bağlam genellikle içinde Startup.cs yapılandırmadan okunan bağlantı dizesiyle yapılandırılır. yönteminin GetConnectionString() anahtarı olan bir yapılandırma değerine bak bakarak dikkat. ConnectionStrings:<connection string name> Bu uzantı yöntemini kullanmak için Microsoft.Extensions.Configuration ad alanını içeri aktarmanız gerekir.

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

WinForms & WPF Uygulamaları

WinForms, WPF ve ASP.NET 4 uygulama, denenmiş ve test edilmiş bir bağlantı dizesi düzenine sahiptir. Bağlantı dizesi, uygulamanın App.config dosyasına (Web.config kullanıyorsanız ASP.NET). Bağlantı dizeniz kullanıcı adı ve parola gibi hassas bilgiler içeriyorsa, Protected Configuration kullanarak yapılandırma dosyasının içeriğini koruyabilirsiniz.

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

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

İpucu

Veritabanı sağlayıcısı kod EF Core yapılandırıldığından, App.config içinde depolanan bağlantı providerName dizeleri için ayar gerekli değildir.

Ardından bağlantı dizesini okumak için ConfigurationManager bağlamının yönteminde API'yi OnConfiguring kullanabilirsiniz. Bu API'yi kullanmak için System.Configuration çerçeve derlemesi için bir başvuru eklemeniz gerekir.

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 dosya adını belirten bir SQLite bağlantısıdır. Bunlar genellikle hassas bilgiler içermez ve bir uygulama dağıtıldığında bunların değişmesi gerekmektedir. Bu nedenle, bu bağlantı dizelerinin aşağıda gösterildiği gibi kodda bırakılamaları genellikle sorun olmaz. Bunları koddan taşımak isterseniz UWP, ayarlar kavramını destekler. Ayrıntılar için UWP belgelerinin App 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");
    }
}