連接字串

大部分的資料庫提供者都需要某種形式的 連接字串 才能連線到資料庫。 有時候,此 連接字串 包含需要保護的敏感性資訊。 當您在環境之間移動應用程式時,您可能需要變更 連接字串,例如開發、測試和生產環境。

ASP.NET Core

在 ASP.NET Core 中,組態系統非常有彈性,而且 連接字串 可以儲存在 appsettings.json、環境變數、用戶密碼存放區或其他組態來源中。 如需詳細資訊,請參閱 ASP.NET Core 檔的組態一節。

例如,您可以使用秘密管理員工具來儲存資料庫密碼,然後在 Scaffolding 中使用只包含 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

或者下列範例顯示儲存在 中的 appsettings.json連接字串。

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

然後,內容通常會在 中Startup.cs設定 連接字串 從組態讀取。 請注意,方法會 GetConnectionString() 尋找索引鍵為 ConnectionStrings:<connection string name>的組態值。 您必須匯入 Microsoft.Extensions.Configuration 命名空間,才能使用此擴充方法。

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

WinForms 和 WPF 應用程式

WinForms、WPF 和 ASP.NET 4 個應用程式已嘗試並測試 連接字串 模式。 連接字串 應該新增至應用程式的 App.config 檔案(如果您使用 ASP.NET Web.config)。 如果您的 連接字串 包含敏感性資訊,例如使用者名稱和密碼,您可以使用受保護的組態來保護組態的內容。

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

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

提示

providerName EF Core 連接字串 儲存在 App.config 中,因為資料庫提供者是透過程式代碼設定,因此不需要此設定。

然後,您可以在內容OnConfiguring的方法中使用 ConfigurationManager API 讀取 連接字串。 您可能需要新增架構元件的參考 System.Configuration ,才能使用此 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);
    }
}

通用 Windows 平台 (UWP)

UWP 應用程式中 連線 字串通常是只指定本機檔名的 SQLite 連線。 它們通常不包含敏感性資訊,而且不需要在部署應用程式時變更。 因此,這些 連接字串 通常可以留在程序代碼中,如下所示。 如果您想要將它們移出程式代碼,UWP 支援設定的概念,請參閱 UWP 檔的 App 設定 一節以取得詳細數據。

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