피드로 돌아가기
An EF Core alternative for .NET apps with complex object graphs — full LINQ, no migrations, no DbContext
Dev.toDev.to
Database

Migration 없는 Typed Object Store로 EF Core의 복잡성 해결

An EF Core alternative for .NET apps with complex object graphs — full LINQ, no migrations, no DbContext

rinat kozin2026년 5월 21일23advanced

Context

EF Core 기반의 복잡한 Object Graph 처리 시 다수의 Table 생성 및 Include 체인으로 인한 쿼리 복잡도 증가. Schema 변경 시마다 발생하는 Migration 파일 관리와 DBA 협업 프로세스가 배포 병목 지점으로 작용.

Technical Solution

  • _objects와 _values 두 개의 테이블로 구성된 범용 스토어 구조를 통한 Schema-less 기반의 Typed Storage 구현
  • C# Class의 Attribute를 Schema 정의로 사용하여 SyncSchemeAsync 호출만으로 실시간 Schema 동기화 처리
  • Expression Tree를 노드 단위로 분석하여 Parameterized SQL로 변환하는 PVT CTE 아키텍처 기반의 쿼리 엔진 설계
  • Nested Class, Array, Dictionary를 포함한 전체 Object Graph를 단일 SaveAsync/LoadAsync 호출로 처리하는 원자적 영속성 계층 구축
  • B-tree Index와 FK 제약 조건을 유지하면서 JSON Blob 방식의 성능 저하를 극복한 Typed Column 매핑 적용

- 복잡한 객체 관계망을 가진 도메인에서 ORM의 Migration 비용이 과도한지 검토 - 정형 데이터의 무결성과 Schema-less의 유연함이 동시에 필요한 경우 PVT(Pivot) 구조의 저장소 설계 고려 - 쿼리 성능 최적화를 위해 Expression Tree를 직접 분석하여 Parameterized SQL을 생성하는 컴파일러 전략 검토

원문 읽기