EF Core DbContextOptionsBuilder 사용 가이드: 환경 설정 및 로깅
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

EF Core DbContextOptionsBuilder 사용 가이드

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

ASP.NET Core 및 EF Core 프로젝트에서 환경별 데이터베이스 설정을 구성하는 개발자

난이도: 중급 이상 (EF Core 및 ASP.NET Core 기초 지식 필요)

핵심 요약

  • DbContextOptionsBuilderProgram.cs 코드 정리 및 개발/생산 환경별 구성을 분리하는 두 가지 주요 목적을 가진다.
  • 일반적인 DbContext 설정UseSqlServer, LogTo, EnableSensitiveDataLogging() 메서드를 사용한다.
  • 환경별 구성을 일반화하기 위해 제네릭 DbContextOptionsBuilder를 사용하는 것이 권장된다.
  • NuGet 패키지(EntityCoreFileLogger)를 사용해 생산 환경 로깅을 처리할 수 있다.

섹션별 세부 요약

1. 환경별 설정 구성

  • appsettings.json에서 DefaultConnection 연결 문자열을 설정한다.
  • Program.cs에서 AddDbContext를 사용해 UseSqlServer, LogTo 등 메서드를 통해 DbContext를 구성한다.
  • 개발 환경에서는 Debug.WriteLine을 사용해 로그를 출력하고, 생산 환경에서는 DbContextToFileLogger를 사용해 파일로 로깅한다.

2. DbContextOptionsBuilder 클래스 설계

  • ContextOptions 클래스는 특정 DbContext에 결합되어 있으나, 다중 DbContext 프로젝트에는 적합하지 않다.
  • 제네릭 DbContextOptionsBuilder를 사용해 모든 프로젝트에서 재사용 가능한 구성을 제공한다.
  • DevelopmentProduction 메서드는 UseSqlServerLogTo를 통해 환경별 설정을 처리한다.

3. NuGet 패키지 통합

  • EntityCoreFileLogger 패키지를 프로젝트에 추가해 생산 환경 로깅을 활성화한다.
  • 프로젝트 파일에 PackageReference를 추가해야 한다.
  • 디버깅 환경에서는 로그가 생성되지만, 생산 환경에서는 실제 로깅이 수행된다.

4. 클래스 프로젝트 및 NuGet 패키지 생성

  • 클래스 프로젝트를 생성해 ContextOptions 클래스를 공유할 수 있다.
  • 로컬 NuGet 패키지를 생성해 여러 프로젝트에서 쉽게 사용할 수 있다.
  • NorthWind2024 데이터베이스를 LocalDb에 생성하고 스크립트로 데이터를 채운다.

결론

  • 제네릭 DbContextOptionsBuilder를 사용해 환경별 설정을 일반화하고, NuGet 패키지로 로깅 기능을 통합하면 모든 프로젝트에서 일관된 DbContext 구성이 가능하다.
  • 로컬 NuGet 패키지 생성은 팀 내 공유 및 재사용성을 높이는 효과적인 방법이다.