EF Core 글로벌 쿼리 필터
추천 자료: ASP.NET Core 인증 및 권한 부여
Entity Framework Core 8.0을 활용한 IsActive 필터링
IsActive 컬럼 추가 및 마이그레이션
이 섹션에서는 기존 모델에 IsActive
속성을 추가하는 방법과 해당 변경사항을 데이터베이스에 반영하는 방법을 설명합니다.
모델 클래스 수정
- IsActive 속성 추가
먼저, 모든 엔터티 모델 클래스에
IsActive
속성을 추가합니다. 예를 들어,State
모델 클래스에 다음과 같은 속성을 추가합니다:public class State { // 기존 속성들... public bool IsActive { get; set; } }
이 과정을
Tribe
및 기타 관련 모델 클래스에 대해서도 수행합니다.
마이그레이션 생성 및 적용
마이그레이션 추가
Add-Migration AddIsActive
명령을 사용하여 새로운 마이그레이션을 추가합니다. 이 마이그레이션은IsActive
컬럼을 데이터베이스 스키마에 추가합니다.
데이터베이스 업데이트
Update-Database
명령을 실행하여 마이그레이션을 데이터베이스에 적용합니다.
글로벌 쿼리 필터 사용하기
이제 IsActive
속성을 기반으로 한 글로벌 쿼리 필터를 DbContext
클래스에 추가합니다. 이 필터는 IsActive
가 true
인 엔터티만 쿼리 결과에 포함되도록 합니다.
DbContext 클래스 수정
- 글로벌 쿼리 필터 추가
TribeDbContext
클래스의OnModelCreating
메서드를 수정하여IsActive
가true
인 엔터티만 반환하는 글로벌 쿼리 필터를 추가합니다. 예를 들어,State
엔터티에 대한 필터는 다음과 같이 추가됩니다:protected override void OnModelCreating(ModelBuilder modelBuilder) { // 기존 구성 코드... modelBuilder.Entity<State>().HasQueryFilter(s => s.IsActive); modelBuilder.Entity<Tribe>().HasQueryFilter(t => t.IsActive); // 기타 모델에 대한 필터 설정... }
이렇게 설정하면,
State
및Tribe
엔터티에 대한 모든 쿼리는 자동으로IsActive
가true
인 엔터티만 반환합니다.
결과
이러한 변경으로 인해, TribeDbContext
를 사용하는 모든 쿼리는 기본적으로 IsActive
가 true
인 엔터티만 포함하게 됩니다. 이는 데이터베이스에서 비활성화된 레코드를 기본적으로 제외하고자 할 때 유용합니다. 예를 들어, 삭제된 또는 비활성화된 데이터를 쿼리에서 자동으로 제외할 수 있습니다.
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!