Kepler.Core 소개 — EF Core API를 위한 스마트 필드 선택
Source: Dev.to
개요
Kepler.Core는 EF Core 확장 기능으로, 필요한 필드만 선택하여 성능을 향상시킬 수 있습니다. 유연한 필터링, 민감한 필드의 제외, 그리고 생성된 쿼리를 완전히 확인할 수 있는 기능을 제공합니다.
주요 기능
- 선택적 필드 조회 – 쿼리에서 포함할 속성을 정확히 선택합니다.
- 다양한 필터링 –
Contains,StartsWith,Equals등 필요한 모든 필터 유형을 적용합니다. - 민감 필드 제외 – 특성이나 Fluent API를 사용해 전역적으로 필드를 숨길 수 있습니다.
- 전역 오버라이드 –
IgnoreGlobalExceptions = true로 설정하면 필요 시 모든 제외를 무시합니다. - 투명한 SQL 생성 – NuGet 패키지가 생성하는 전체 람다 식과 SQL을 확인할 수 있어 블랙박스 동작이 없습니다.
- 정책 관리 – 모델/테이블당 여러 개의 명명된 정책을 정의하여 다양한 사용 사례에 대응합니다.
- 내부 검사 도구 – 전역 제외 항목, 필터, 정렬 필드, 정책에 의해 선택된 속성을 검사합니다.
시작하기
-
패키지 추가
dotnet add package Kepler.Core -
정책 생성 –
Program.cs(또는 서비스 설정 파일)에서:services.AddKeplerCore(options => { options.PolicyName = "MyPolicy"; options.IgnoreGlobalExceptions = false; // includes, excludes, filters 등을 구성합니다. }); -
정책 적용 – 쿼리 실행 시:
var result = await dbContext.Customers .ApplyKeplerPolicy("MyPolicy") .ToListAsync();이 쿼리는 MyPolicy에 정의된 필드만 선택하고 전역 제외 항목을 준수합니다.
다중 정책
필요에 따라 원하는 만큼 정책을 정의할 수 있으며, 각 정책은 고유한 포함/제외 필드와 필터를 가집니다. 쿼리를 실행할 때 정책 이름으로 참조합니다.
유용한 링크
- NuGet 패키지:
- 소스 코드:
데모 프로젝트
AdventureWorks 2022 데이터베이스를 사용한 완전한 데모가 제공됩니다. 저장소를 복제하고 데모를 실행하면 Kepler.Core의 동작을 확인할 수 있습니다:
git clone https://github.com/MohammadAliEbrahimzadeh/Kepler.Core.git
cd Kepler.Core/Demo
dotnet run
기여 및 피드백
Kepler.Core가 유용하다고 생각되면 저장소에 ⭐를 눌러 주세요. 이슈, 제안 또는 기여가 필요하면 GitHub에서 이슈나 풀 리퀘스트를 열어 주세요. 여러분의 피드백을 환영합니다.