Introduction
Entity Framework Core 10 (EF Core 10) is released alongside .NET 10 and is an LTS version. It focuses on modern database capabilities, including vector search, JSON improvements, improved LINQ translation, bulk updates, and enterprise-grade features for SQL Server, Azure SQL, and Cosmos DB.
EF Core 10 requires .NET 10 and does not support older runtimes.
Platform and Runtime Requirements
EF Core 10 runs only on .NET 10
It is an LTS release suitable for long-term enterprise projects
Older EF Core versions should be upgraded carefully due to breaking changes
SQL Server and Azure SQL Enhancements
Vector Search Support
EF Core 10 introduces first-class support for the SQL Server vector data type and distance functions. This enables AI-driven similarity search scenarios directly from LINQ.
var query = await context.Documents
.OrderBy(d => EF.Functions.VectorDistance(
"cosine",
d.Embedding,
inputVector))
.Take(5)
.ToListAsync();
Use cases include semantic search, recommendations, and embeddings-based ranking.
Native JSON Column Support
JSON is now treated as a first-class data type in SQL Server (Azure SQL / SQL Server 2025).
EF Core 10 can:
Map JSON columns automatically
Query inside JSON using LINQ
Update JSON fields using bulk operations
public class Blog
{
public int Id { get; set; }
public BlogMetadata Metadata { get; set; }
}
modelBuilder.Entity<Blog>()
.ComplexProperty(b => b.Metadata, c => c.ToJson());
Named Default Constraints
You can now control default constraint naming to improve schema readability and DevOps consistency.
modelBuilder.Entity<Post>()
.Property(p => p.CreatedAt)
.HasDefaultValueSql("GETDATE()", "DF_Post_CreatedAt");
Or enable naming globally:
modelBuilder.UseNamedDefaultConstraints();
Cosmos DB Provider Improvements
Full-Text Search
EF Core 10 supports Cosmos DB full-text search using LINQ-friendly APIs.
modelBuilder.Entity<Article>()
.Property(a => a.Content)
.EnableFullTextSearch();
This allows efficient search without manual query strings.
Vector Search Stabilization
Vector search in Cosmos DB is no longer experimental.
New improvements include:
Safer Model Evolution
When new required properties are added, existing Cosmos documents are now materialized using default values instead of throwing runtime exceptions.
This makes schema evolution safer in NoSQL systems.
Complex Types Improvements
Complex types represent value objects without identity.
Table Mapping
modelBuilder.Entity<Customer>()
.ComplexProperty(c => c.Address);
All address fields are stored in the same table as the parent entity.
JSON Mapping for Complex Types
modelBuilder.Entity<Customer>()
.ComplexProperty(c => c.Address, c => c.ToJson());
Structs are also supported as complex types in EF Core 10.
LINQ and Query Translation Improvements
LeftJoin and RightJoin Operators
EF Core 10 adds direct support for outer joins without workarounds.
var result = context.Orders
.LeftJoin(
context.Customers,
o => o.CustomerId,
c => c.Id,
(o, c) => new
{
OrderId = o.Id,
CustomerName = c.Name
});
This maps directly to SQL LEFT JOIN.
Improved Collection Parameter Translation
Large IN queries now generate more efficient SQL with better query plan reuse.
You can also configure translation strategy globally or per query.
Bulk Updates and ExecuteUpdate Enhancements
JSON Column Updates
EF Core 10 allows bulk updates inside JSON documents.
await context.Blogs.ExecuteUpdateAsync(setters =>
setters.SetProperty(
b => b.Metadata.ViewCount,
b => b.Metadata.ViewCount + 1));
Non-Expression Lambda Support
You can now write conditional update logic more naturally.
await context.Users.ExecuteUpdateAsync(s =>
{
s.SetProperty(u => u.IsActive, true);
if (updateRole)
s.SetProperty(u => u.Role, "Admin");
});
Named Global Query Filters
Multiple named filters can be applied to the same entity.
modelBuilder.Entity<Order>()
.HasQueryFilter("SoftDelete", o => !o.IsDeleted)
.HasQueryFilter("Tenant", o => o.TenantId == tenantId);
Disable selectively at query time:
context.Orders
.IgnoreQueryFilters(new[] { "SoftDelete" })
.ToListAsync();
Security and Logging Improvements
SQL Parameter Redaction
EF Core 10 redacts inline SQL parameter values in logs by default.
This prevents sensitive data leakage in logs while keeping SQL readable.
Migration and Tooling Changes
Migrations no longer run inside a single global transaction
Improved SQL Server scaffolding
Better performance in async context handling
Breaking Changes
Requires .NET 10
Some ExecuteUpdate APIs have signature changes
Behavioral changes in migrations and logging may affect existing pipelines
Conclusion
EF Core 10 is a strong step forward for:
AI-driven database workloads
JSON-heavy schemas
High-performance bulk operations
Enterprise-grade query control
It is best suited for new projects or planned upgrades targeting .NET 10 LTS.