EF Core 7.0 (EF7)
EF Core 7.0 GA (commonly referred to as EF7) is now available from NuGet.
See What's New in EF7 for a detailed look at all the new features in EF7. In summary, the following new features are included in EF7:
- Make basic EF scenarios work under aggressive trimming
- Entity splitting support
- Support for GroupBy entityType
- Support GroupJoin when it is final query operator
- ExecuteUpdate: Add SetProperty overload that accepts a value directly (no lambda)
- Support sproc input/output parameters on non-concurrency-token properties
- Implement TagWith for ExecuteUpdate and DeleteUpdate
- ExecuteDelete for owner when only its owned types are sharing the same table
- Stop scaffolding DbSet initialization to null!
- CSharpHelper: support more types of collection literals
- Map JSON values stored in database to EF properties
- ExecuteUpdate/Delete (AKA bulk update, without loading data into memory)
- Code templates for scaffolding entity types and DbContext from an existing database
- Support raw SQL Queries for basic types like Guid, DateTime and int
- Allow applications to create model building conventions (aka public conventions)
- Cosmos: Support AAD RBAC via the ClientSecretCredential
- Map inserts, updates, and deletes (CUD operations) to stored procedures
- Add a static flag in EF that will be set when code is being executed for design-time discover
- Support sequence key generation on SQL Server, which is useful for Table-per-concrete-type (TPC) mapping
- Allow null connection string to be passed to UseProvider methods
- Downgrade the ContextInitialized event from Information to Debug
- Get an EntityEntry for Shared Entity Types
- Make EntityEntryGraphIterator publicly usable
- Support unidirectional many-to-many relationships
- Translate string.Join and string.Concat
- RevEng: Enable generating IEntityTypeConfiguration classes (avoids large OnModelCreating)
- Interception to modify the LINQ expression tree
- Interception for DbUpdateConcurrencyException
- Add interception event to be fired when EF has finished consuming a result set
- Add events for DetectChanges/state change
- ChangeTracker: New event for "entity about to get tracked"
- Translate EnvelopeCombiner.CombineAsGeometry aggregate function
- SQL Server: Translate statistics aggregate functions
- Filtered Includes for hidden navigation properties
- Make it easier to pass a CancellationToken to FindAsync
- Interception for object materialization (a.k.a. "ObjectMaterialized")
- Provide a hook for identity resolution
- Create lazy-loading and change-tracking proxy types lazily
- Compiled model: Allow use of lazy loading and change tracking proxy types
- Full support for custom provider aggregate functions
- Spatial: Translate aggregate functions
- Allow specifying different column names per table in TPT, TPC or entity splitting
- Support for custom proxy generation
- TPC inheritance mapping pattern
- DeleteBehaviorAttribute
- Translate GetType() for entity types with inheritance
- Delay DbCommandInterceptor.CommandCreated until DbCommand properties are initialized
- Remove unnecessary extra batches in SaveChanges
- Don't check for a connection string until after ConnectionOpening has been called
- Add ConnectionCreating/ConnectionCreated to DbConnectionInterceptor
- Migration name filter
- Add support for AT TIME ZONE
- GroupBy aggregate lifting
- Pascal-case the DbContext name when scaffolding
- Support value generation with converters
- Improve batching performance when using TPH mappings
- Attribute (Data Annotations) mapping for composite primary keys
- SQL Server UTF8 collations
- Stop wrapping single changes in transactions where possible
- Use RETURNING/OUTPUT clause for UPDATE/DELETE
- SQLite SaveChanges: Use RETURNING clause
- SQL Server: Optimize SQL Server OUTPUT clause usage when retrieving database-generated values
- Stop automatically deleting orphans for optional relationships with cascade delete configured
- Empty default interface implementations for all interceptor interface methods
- Temporal tables support for owned entities and other table splitting scenarios
- Support for index ordering (ASC/DESC)
- Support "non-rooted" query expressions in compiled queries
- Property/Reference/etc overloads that take IProperty/INavigation
- Distinguish cancellation from failure to allow different logging strategies
- Lift table from subquery when joining if no additional operations
- DiagnosticSuppressor for CS8618 for DbSet properties
- Stop generating a default DbContext constructor when using dotnet ef dbcontext scaffold --no-onconfiguring
- Robust and extensible SQL precedence/parentheses mechanism
- Translation for string.IndexOf(string, int)
- Support SqlNullabilityProcessor and COALESCE with more than two arguments
- Support Contains when using a IReadOnlySet
- Overload of EnableRetryOnFailure that allows specifying errorCodesToAdd without count / delay
See GitHub for all issues resolved in EF7.