Bağlantı DizeleriConnection Strings

Veritabanı sağlayıcılarının çoğu, veritabanına bağlanmak için bir bağlantı dizesi biçimi gerektirir.Most database providers require some form of connection string to connect to the database. Bazen bu bağlantı dizesi korunması gereken hassas bilgiler içerir.Sometimes this connection string contains sensitive information that needs to be protected. Uygulamanızı geliştirme, test ve üretim gibi ortamlar arasında taşırken bağlantı dizesini de değiştirmeniz gerekebilir.You may also need to change the connection string as you move your application between environments, such as development, testing, and production.

WinForms & WPF uygulamalarıWinForms & WPF Applications

WinForms, WPF ve ASP.NET 4 uygulamaları, denenen ve sınanan bir bağlantı dizesi düzenine sahiptir.WinForms, WPF, and ASP.NET 4 applications have a tried and tested connection string pattern. Bağlantı dizesi uygulamanızın App.config dosyasına eklenmelidir (ASP.NET kullanıyorsanız, Web.config).The connection string should be added to your application's App.config file (Web.config if you are using ASP.NET). Bağlantı dizeniz Kullanıcı adı ve parola gibi hassas bilgiler içeriyorsa, yapılandırma dosyasının içeriğini gizli yönetici aracınıkullanarak koruyabilirsiniz.If your connection string contains sensitive information, such as username and password, you can protect the contents of the configuration file using the Secret Manager tool.

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

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

İpucu

providerNameVeritabanı sağlayıcısı kod aracılığıyla yapılandırıldığından App.config depolanan EF Core bağlantı dizesinde ayar gerekli değildir.The providerName setting is not required on EF Core connection strings stored in App.config because the database provider is configured via code.

Daha sonra bağlantı dizesini ConfigurationManager bağlam yöntemindeki API 'yi kullanarak okuyabilirsiniz OnConfiguring .You can then read the connection string using the ConfigurationManager API in your context's OnConfiguring method. System.ConfigurationBu API 'yi kullanabilmeniz için Framework derlemesine bir başvuru eklemeniz gerekebilir.You may need to add a reference to the System.Configuration framework assembly to be able to use this API.

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)Universal Windows Platform (UWP)

UWP uygulamasındaki bağlantı dizeleri genellikle yerel bir dosya adı belirten bir SQLite bağlantıdır.Connection strings in a UWP application are typically a SQLite connection that just specifies a local filename. Genellikle hassas bilgiler içermez ve bir uygulama dağıtıldığında değiştirilmeleri gerekmez.They typically do not contain sensitive information, and do not need to be changed as an application is deployed. Bu şekilde, bu bağlantı dizeleri genellikle aşağıda gösterildiği gibi, kodda ayrılmalıdır.As such, these connection strings are usually fine to be left in code, as shown below. Kod dışına taşımak isterseniz, UWP ayar kavramını destekler, Ayrıntılar için UWP belgelerinin uygulama ayarları bölümüne bakın.If you wish to move them out of code then UWP supports the concept of settings, see the App Settings section of the UWP documentation for details.

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

ASP.NET ÇekirdeğiASP.NET Core

ASP.NET Core yapılandırma sistemi çok esnektir ve bağlantı dizesi appsettings.json , bir ortam değişkeni, Kullanıcı gizli dizisi veya başka bir yapılandırma kaynağı içinde depolanabilir.In ASP.NET Core the configuration system is very flexible, and the connection string could be stored in appsettings.json, an environment variable, the user secret store, or another configuration source. Daha fazla bilgi için ASP.NET Core belgelerinin yapılandırma bölümüne bakın.See the Configuration section of the ASP.NET Core documentation for more details.

Örneğin, veritabanı parolanızı depolamak için gizli dizi Yöneticisi aracını kullanabilir ve sonra yapı İskelesi ' nde, ' den oluşan bir bağlantı dizesi kullanabilirsiniz Name=<database-alias> .For instance, you can use the Secret Manager tool to store your database password and then, in scaffolding, use a connection string that simply consists of 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

Ya da aşağıdaki örnek, içinde depolanan bağlantı dizesini gösterir appsettings.json .Or the following example shows the connection string stored in appsettings.json.

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

Daha sonra bağlam, ' de Startup.cs yapılandırmadan okunmakta olan bağlantı dizesiyle yapılandırılır.Then the context is typically configured in Startup.cs with the connection string being read from configuration. Yöntemi, GetConnectionString() anahtarı olan bir yapılandırma değeri arar ConnectionStrings:<connection string name> .Note the GetConnectionString() method looks for a configuration value whose key is ConnectionStrings:<connection string name>. Bu genişletme yöntemini kullanmak için Microsoft.Extensions.Configuration ad alanını içeri aktarmanız gerekir.You need to import the Microsoft.Extensions.Configuration namespace to use this extension method.

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