共用方式為


連接字串

大部分的資料庫提供者都需要 連接字串 才能連線到資料庫。 連接字串:

  • 可以包含需要保護的敏感性資訊。
  • 當應用程式移至不同的環境時,可能需要變更,例如開發、測試和生產環境。

如需詳細資訊,請參閱 保護驗證流程

ASP.NET Core

ASP.NET Core 組態可以儲存各種提供者的 連接字串:

警告

秘密不應該新增至組態檔。

例如, 秘密管理員工具 可以儲存資料庫密碼。 當 Scaffolding 與使用秘密管理員時,連接字串 包含 Name=<database-alias>

如需詳細資訊,請參閱 ASP.NET Core 檔的組態一節。

dotnet user-secrets init
dotnet user-secrets set ConnectionStrings:YourDatabaseAlias "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=YourDatabase"

然後,在 Scaffolding 中使用包含 的 連接字串Name=<database-alias>

dotnet ef dbcontext scaffold Name=ConnectionStrings:YourDatabaseAlias Microsoft.EntityFrameworkCore.SqlServer

警告

本文使用本機資料庫,其不需要使用者進行驗證。 實際執行應用程式應該使用可用的最安全驗證流程。 如需已部署測試與實際執行應用程式驗證的詳細資訊,請參閱安全驗證流程

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

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

內容通常會在 中Program.cs設定 連接字串 從組態讀取。 請注意,GetConnectionString 方法會尋找索引鍵為 ConnectionStrings:<connection string name>的組態值。 GetConnectionString需要 Microsoft.Extensions.Configuration 命名空間。

var conString = builder.Configuration.GetConnectionString("BloggingContext") ??
     throw new InvalidOperationException("Connection string 'BloggingContext'" +
    " not found.");
builder.Services.AddDbContext<BloggingContext>(options =>
    options.UseSqlServer(conString));

WinForms 和 WPF 應用程式

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

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

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

提示

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

接著,您可以在內容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 檔案 的應用程式設定一節以取得詳細數據。

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