
EF Core 10 Release: What Changes with Native LeftJoin and Vector Search
For .NET developers working with relational databases, LINQ is an essential tool, but it has historically required putting up with unnecessarily long code whenever writing outer joins. EF Core 10 removes the syntactic limitations that have long frustrated developers and introduces features tailored to the shift in databases accommodating AI workloads.
Simplifying Complex Join Queries: Native LeftJoin and RightJoin
To perform an outer join in existing EF Core, you had to connect GroupJoin with SelectMany, and DefaultIfEmpty in a long chain. A task that takes just a single line of LEFT JOIN in SQL would blow up into three or four lines of complex lambda expressions in C# code.
EF Core 10 now officially supports LeftJoin and RightJoin as LINQ query operators. Since the methods are converted directly into the intended SQL syntax, you can understand the query's intent at a glance, significantly improving readability.
Here is an example of writing an outer join in EF Core 10.
It generates clean outer join queries tailored to the database engine without the need for verbose boilerplate code.
Official Support for SQL Server 2025 Vector Search
As more applications adopt Generative AI and Retrieval-Augmented Generation (RAG), vector search at the database level has become critical. SQL Server 2025 and Azure SQL Database have introduced native vector data types, and EF Core 10 supports them fully at the framework level.
Now you can define an index in the model builder with the HasVectorIndex() method and handle embedding values using the SqlVector<float> type. At query time, you can call EF.Functions.VectorDistance() to directly calculate cosine similarity or Euclidean distance. It is now possible to build similarity search pipelines directly within SQL Server without relying on separate vector databases or unofficial extension libraries.
Changes to Development Tools and Upgrade Considerations
To adopt EF Core 10, both your SDK and runtime environment must be on .NET 10 or later. Because it is incompatible with older .NET runtimes, a project-wide runtime migration plan must come first.
Caution is also needed when handling migration commands. In multi-targeting projects specifying multiple target frameworks, you must include the dotnet-ef flag when executing --framework commands. For ExecuteUpdateAsync, which is frequently used for bulk data changes, the signature has been improved so that you can pass simple lambda expressions instead of complex expression trees.
Which Projects Should Try This?
For teams building backends in C# and looking to implement RAG-based search directly on SQL Server, EF Core 10's vector search integration is an attractive option. Projects struggling with high maintenance costs due to complex LINQ join queries can also enjoy the benefits of code simplification immediately.
If you are planning a new .NET 10 project or redesigning your data layer for a Long-Term Support (LTS) version, it is worth creating a test project in advance to check the new join syntax and tool changes.
