연결 문자열

대부분의 데이터베이스 공급자는 데이터베이스에 연결하려면 특정 형태의 연결 문자열이 필요합니다. 경우에 따라 이 연결 문자열에는 보호해야 하는 중요한 정보가 포함되어 있습니다. 개발, 테스트, 프로덕션과 같은 환경 간에 애플리케이션을 이동할 때 연결 문자열을 변경해야 할 수도 있습니다.

ASP.NET Core

ASP.NET Core의 구성 시스템은 매우 유연하고 연결 문자열은 appsettings.json, 환경 변수, 사용자 비밀 저장소 또는 다른 구성 원본에 저장될 수 있습니다. 자세한 내용은 ASP.NET Core 설명서의 구성 섹션을 참조하세요.

예를 들어, 비밀 관리자 도구를 사용하여 데이터베이스 암호를 저장하면 스캐폴딩에서 단순하게 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>

데이터베이스 공급자는 코드를 통해 구성되므로 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");
    }
}