Backend 개발/.NET

ASP.NET [DB 연결 문자열(Connection Strings) 설정 방법]

수달리즘 2025. 6. 19. 10:25
반응형

Connection Strings

ASP.NET Core를 이용하여 개발 시 DB 연결 문자열(DB 접속 정보)을 하드코딩하는 대신 appsettings.json에 한 번만 설정하여 필요할 때마다 설정값을 가져와 재사용할 수 있다. 스프링으로 따지면 application.yml(혹은 properties) 파일로 환경/설정 정보를 관리하는 것과 유사하며 보안, 유지보수 관점에서 유용해진다.

appsettings.json 파일

주로 asp.net Core 응요프로그램의 설정 저장하는 데 사용

예제

1) appsettings.json 파일에 설정 추가

{
  // 연결 정보 설정
  "ConnectionStrings": {
    "DefaultConnection": "Server=127.0.0.1;user=root;password=1234;database=test",
    "AdoMariaDBConnection": "Server=localhost;Database=test;Uid=root;Pwd=1234;"
  },
  ..
}

2) Program.cs 파일에서 DB 연결 정보 세팅(DI 하는 부분)

// Program.cs 파일 설정
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews(); // 뷰가 있는 컨트롤러가 웹 애플리케이션에 연결됨

// appsettings.json 에서 DB 연결 정보 가져오기
// ??"" ==> default 값 "" 세팅
string? adoConnectionStrings = builder.Configuration.GetConnectionString("AdoMariaDBConnection")??"";

// 생성된 객체가 없으면 필요할 때마다 새로 생성 및 소멸해줌(의존성 주입과 관련)
builder.Services.AddTransient<ILoginService, LoginService>();
// DB 연결 정보 의존 주입
builder.Services.AddTransient<ILoginMapper, LoginMapper>(provider => new LoginMapper(adoConnectionStrings));
// db
builder.Services.AddDbContext<SchoolContext>
(   options => options.UseMySql(builder.Configuration.GetConnectionString("DefaultConnection"),
        ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("DefaultConnection")))
);

string? adoConnectionStrings = builder.Configuration.GetConnectionString("AdoMariaDBConnection")??"";

↑ 이 부분은 기본값을 세팅할 수도 있지만 세팅되어 있지 않을 경우 다음과 같이 예외를 던질 수도 있다.

var conString = builder.Configuration.GetConnectionString("AdoMariaDBConnection") ??
     throw new InvalidOperationException("Connection string 'AdoMariaDBConnection'" +
    " not found.");

3) 실제 DB 작업하는 클래스에서 사용

 public class LoginMapper : ILoginMapper
    {
        private string connectionString;
        // appsettings.json 에 설정한 연결 정보 주입됨
        public LoginMapper(string conn)
        {
            connectionString = conn;
        }
        ..
}

 

728x90
반응형