Maru@maru

Dev Hub

EF Core 10 릴리스: 네이티브 LeftJoin과 벡터 검색으로 달라지는 점

관계형 데이터베이스를 다루는 닷넷 개발자에게 LINQ는 필수 도구이지만, 그동안 외부 조인을 작성할 때마다 불필요하게 긴 코드를 감수해야 했습니다. EF Core 10은 오랜 기간 개발자들의 피로감을 유발하던 문법적 한계를 걷어내고, 인공지능 워크로드를 수용하는 데이터베이스 변화에 맞춘 기능들을 선보였습니다.

복잡했던 조인 쿼리의 간소화: 네이티브 LeftJoin과 RightJoin

기존 EF Core에서 외부 조인을 수행하려면 GroupJoin과 SelectMany, DefaultIfEmpty를 길게 연결해야 했습니다. SQL에서는 단순한 LEFT JOIN 한 줄로 끝날 작업이 C# 코드에서는 서너 줄의 복잡한 람다 식으로 불어나는 문제가 있었습니다.

EF Core 10은 LINQ 쿼리 연산자로 LeftJoin과 RightJoin을 공식 지원합니다. 메서드가 의도한 SQL 구문으로 직접 변환되기 때문에 쿼리 의도를 한눈에 파악할 수 있고 가독성이 크게 개선됩니다.

EF Core 10 기준 외부 조인 작성 예시입니다.

csharp

기존의 장황한 보일러플레이트 코드 없이도 데이터베이스 엔진에 맞는 외부 조인 쿼리가 깔끔하게 생성됩니다.

SQL Server 2025 벡터 검색의 공식 지원

생성형 AI와 검색 증강 생성을 도입하는 애플리케이션이 늘어나면서 데이터베이스 단에서의 벡터 검색이 중요해졌습니다. SQL Server 2025와 Azure SQL Database는 네이티브 벡터 데이터 타입을 도입했고, EF Core 10은 이를 프레임워크 차원에서 온전히 지원합니다.

이제 모델 빌더에서 HasVectorIndex() 메서드로 인덱스를 정의하고, SqlVector<float> 타입을 활용해 임베딩 값을 다룰 수 있습니다. 쿼리 시점에는 EF.Functions.VectorDistance()를 호출하여 코사인 유사도나 유클리드 거리를 직접 계산합니다. 별도의 벡터 데이터베이스를 구축하거나 비공식 확장 라이브러리에 의존하지 않고도 SQL Server 안에서 유사도 검색 파이프라인을 구축할 수 있게 되었습니다.

개발 도구 변경점과 업그레이드 고려 사항

EF Core 10을 도입하려면 SDK와 런타임 환경 모두 .NET 10 이상으로 맞춰야 합니다. 하위 버전의 .NET 런타임과는 호환되지 않으므로 프로젝트 전반의 런타임 전환 계획이 선행되어야 합니다.

마이그레이션 명령어를 다룰 때도 주의가 필요합니다. 여러 타깃 프레임워크를 지정한 멀티 타기팅 프로젝트에서는 dotnet-ef 명령어를 실행할 때 --framework 플래그를 필수로 지정해야 합니다. 대량 데이터 변경에 자주 쓰이는 ExecuteUpdateAsync의 경우 기존의 복잡한 식 트리 대신 일반 람다 식을 전달할 수 있도록 시그니처가 개선되었습니다.

어떤 프로젝트가 시도해보면 좋을까

C#으로 백엔드를 구성하면서 RAG 기반 검색 기능을 SQL Server 위에서 직접 구현하려는 팀이라면 EF Core 10의 벡터 검색 연동은 매력적인 선택지입니다. 복잡한 LINQ 조인 쿼리로 유지보수 비용을 겪고 있던 프로젝트 역시 코드 단순화 혜택을 즉각 누릴 수 있습니다.

신규 .NET 10 프로젝트를 기획 중이거나 장기 지원 버전에 맞춰 데이터 계층을 개편하려는 환경이라면 미리 테스트 프로젝트를 만들어 조인 문법과 도구 변경 사항을 점검해 볼 만합니다.

Loading comments…