EF Core 7.0 (EF7) RC2 is available from NuGet
RC2 is does not include some important fixes that will be in the GA release. Therefore, we recommend using the daily builds when testing your applications with EF7.
RC2 contains the following new features:
- 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
RC2 also includes the following new features from previews 1 through 7 and RC1:
- 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<TEntity>
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 preview 1, preview 2, preview 3, preview 4, preview 5, preview 6, preview 7, RC1, and RC2.