연결 문자열
대부분의 데이터베이스 공급자는 데이터베이스에 연결하기 위해 연결 문자열 필요합니다. 연결 문자열:
- 보호해야 하는 중요한 정보를 포함할 수 있습니다.
- 앱이 개발, 테스트 및 프로덕션과 같은 다른 환경으로 이동할 때 변경해야 할 수 있습니다.
자세한 내용은 보안 인증 흐름을 참조 하세요.
ASP.NET Core
ASP.NET Core 구성은 다양한 공급자와 연결 문자열 저장할 수 있습니다.
- 또는
appsettings.json
파일에서appsettings.Development.json
- 환경 변수에서
- Azure Key Vault 사용
- 비밀 관리자 도구 사용
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");
}
}
.NET