EF Core 글로벌 쿼리 필터

  • 3 minutes to read

Entity Framework Core 8.0을 활용한 IsActive 필터링

IsActive 컬럼 추가 및 마이그레이션

이 섹션에서는 기존 모델에 IsActive 속성을 추가하는 방법과 해당 변경사항을 데이터베이스에 반영하는 방법을 설명합니다.

모델 클래스 수정

  1. IsActive 속성 추가
    • 먼저, 모든 엔터티 모델 클래스에 IsActive 속성을 추가합니다. 예를 들어, State 모델 클래스에 다음과 같은 속성을 추가합니다:

      public class State
      {
          // 기존 속성들...
      
          public bool IsActive { get; set; }
      }
      
    • 이 과정을 Tribe 및 기타 관련 모델 클래스에 대해서도 수행합니다.

마이그레이션 생성 및 적용

  1. 마이그레이션 추가

    • Add-Migration AddIsActive 명령을 사용하여 새로운 마이그레이션을 추가합니다. 이 마이그레이션은 IsActive 컬럼을 데이터베이스 스키마에 추가합니다.
  2. 데이터베이스 업데이트

    • Update-Database 명령을 실행하여 마이그레이션을 데이터베이스에 적용합니다.

글로벌 쿼리 필터 사용하기

이제 IsActive 속성을 기반으로 한 글로벌 쿼리 필터를 DbContext 클래스에 추가합니다. 이 필터는 IsActivetrue인 엔터티만 쿼리 결과에 포함되도록 합니다.

DbContext 클래스 수정

  1. 글로벌 쿼리 필터 추가
    • TribeDbContext 클래스의 OnModelCreating 메서드를 수정하여 IsActivetrue인 엔터티만 반환하는 글로벌 쿼리 필터를 추가합니다. 예를 들어, State 엔터티에 대한 필터는 다음과 같이 추가됩니다:

      protected override void OnModelCreating(ModelBuilder modelBuilder)
      {
          // 기존 구성 코드...
      
          modelBuilder.Entity<State>().HasQueryFilter(s => s.IsActive);
          modelBuilder.Entity<Tribe>().HasQueryFilter(t => t.IsActive);
      
          // 기타 모델에 대한 필터 설정...
      }
      
    • 이렇게 설정하면, StateTribe 엔터티에 대한 모든 쿼리는 자동으로 IsActivetrue인 엔터티만 반환합니다.

결과

이러한 변경으로 인해, TribeDbContext를 사용하는 모든 쿼리는 기본적으로 IsActivetrue인 엔터티만 포함하게 됩니다. 이는 데이터베이스에서 비활성화된 레코드를 기본적으로 제외하고자 할 때 유용합니다. 예를 들어, 삭제된 또는 비활성화된 데이터를 쿼리에서 자동으로 제외할 수 있습니다.

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com