다음을 통해 공유


연결 문자열

대부분의 데이터베이스 공급자는 데이터베이스에 연결하기 위해 연결 문자열 필요합니다. 연결 문자열:

  • 보호해야 하는 중요한 정보를 포함할 수 있습니다.
  • 앱이 개발, 테스트 및 프로덕션과 같은 다른 환경으로 이동할 때 변경해야 할 수 있습니다.

자세한 내용은 보안 인증 흐름을 참조 하세요.

ASP.NET Core

ASP.NET Core 구성은 다양한 공급자와 연결 문자열 저장할 수 있습니다.

Warning

비밀은 구성 파일에 추가해서는 안 됩니다.

예를 들어 Secret Manager 도구데이터베이스 암호를 저장할 수 있습니다. 비밀 관리자를 스캐폴딩하고 사용하는 경우 연결 문자열 .로 Name=<database-alias>구성됩니다.

자세한 내용은 ASP.NET Core 설명서의 구성 섹션을 참조하세요.

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

그런 다음 스캐폴딩에서 .로 구성된 Name=<database-alias>연결 문자열 사용합니다.

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

Warning

이 문서에서는 사용자를 인증할 필요가 없는 로컬 데이터베이스를 사용합니다. 프로덕션 앱은 사용 가능한 가장 안전한 인증 흐름을 사용해야 합니다. 배포된 테스트 및 프로덕션 앱의 인증에 대한 자세한 내용은 보안 인증 흐름을 참조 하세요.

다음 예제에서는 에 저장된 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>

데이터베이스 공급자는 코드를 통해 구성되므로 App.config에 저장된 EF Core 연결 문자열에는 providerName 설정이 필요하지 않습니다.

그런 다음, 컨텍스트의 ConfigurationManager 메서드에서 OnConfiguring API를 사용하여 연결 문자열을 읽을 수 있습니다. 이 API를 사용하려면 System.Configuration 프레임워크 어셈블리에 대한 참조를 추가해야 할 수 있습니다.

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

UWP(유니버설 Windows 플랫폼)

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