.NET Data Biweekly Updates (2022)
ajcvickers opened this issue · 21 comments
Biweekly status updates for 2022
For 2023, see Latest news and progress on .NET 8 and EF8
For previous years, see:
January 13, 2022
Expand to see status from this week...
Highlights
- The plan for EF7 is published to our docs!
- As always, feedback is greatly appreciated
- .NET Blog: A Comprehensive Guide to Port from EF6 to EF Core
- How to port from EDMX/Code First/Database First
- Detailed cases to consider
- EF Core 6.0.1 is on NuGet
- 6.0.2 scheduled for February
Latest Community Standup: The EF7 Plan
The plan for EF7 has been published. In this episode, the EF Core/.NET Data team reviews the details of the plan and answers live questions about the roadmap.
The .NET Data Community Standups are live-streamed every other Wednesday to Twitch, YouTube, and Twitter. This is your opportunity to interact with the .NET Data team and community. All past episodes are available on YouTube.
Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.1
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
- DateTime with z suffix is not respected when reading entities
- 'The object has been removed from the model.' when building model
- EF Core 6.0 regression when using HasDefaultSchema() with ToTable(null)
- Variable names must be unique within a query batch or stored procedure
- Stack overflow when using circular composite key dependencies
- SqliteConnectionFactory.cs is not thread-safe
- EF Core 6.0 InvalidOperationException: The object has been removed from the model
- Subquery.Contains throws when the type of item is value type
- Query with n:m relation adds non-existent column
- InvalidOperationException "sequence contains no matching element" in TableReferenceExpression.get_Table
- Update from 5.0.1 to 6.0breaks all SqliteConnection
- Scaffolder throws error if junction table foreign key columns have identical names
- EFCore 6 - NullReferenceException upon EnsureDeleted
- Non-nullable value comparer can't be applied on nullable type
- Exception in SQL server query in EF Core 6, looks related to HasQueryFilter(), worked in EF Core 5
- RC2 Sqlite provider no longer clears temporary files on exit
- The dotnet ef dbcontext scaffold command does not print all expected logs
EF Core 5.0.13
EF Core 5.0.13 is available on NuGet now. This is a patch release of EF Core 5.0 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 5.0.12.
EF Core 3.1.22
EF Core 3.1.22 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.21.
Pull requests merged since the last update
Community contributions
- @yecril71pl: WithMany doc: fix the sample expression
- @vslee: fix typo in 7.0 plan.md
- @okyrylchuk: Fix CosmosModelConfigurationSample
- @aileen-r: Fix minor typo: code-first/migrations/team.md
- @virzak: Fix command execution on wrong table
- @Maniizzle: Clean OnConfiguring Method
- @kostat: Update EntityLinq library description
- @AshkanAbd: Update supported versions of EFCore for EFCore.SoftDelete package
Many thanks to all our contributors!
EF Core
- Documentation
- Fix spelling in LoggingDefinitions.LogSaveChangesCanceled
- EF6 to EF Core porting guide
- Update scaffolding.md
- Document good pagination practices
- Add a workaround for IDesignTimeDbContextFactory with UseModel breaking change
- Fix grammar typo on value conversions page
- Document UseQueryTrackingBehavior
- Update index.md
- Move DbContext Pooling from Miscellaneous TOC to DbContext config
- Documentation on provider specification tests
- Amend split query note on EF Core versions
- Document IExecutionStrategy lifetime breaking change
- Document Cosmos throughput configuration
- Fix broken links in porting guide
- Fix some xrefs
- Query
- No test left behind: Ef6GroupByTest
- Static analysis: protect against mutating fields in hash calculations
- Fix cancellation test flakiness
- Grinding the gears of war
- (6.0.2) Add DynamicDependency on System.Math for trimming
- (6.0.2) Query: Assign proper type to CollectionResultExpression
- (6.0.2) Lift GroupByAggregate when correlation predicate matches
- (6.0.2) Query: Update column expression correctly when lifting joins from group by aggregate subquery
- (6.0.2) Avoid stackoverflow in lifting group by aggregate term
- (6.0.2) Put parentheses around IS NULL for non-bool operands
- Fix baselines for IS NULL change
- Miscellaneous
- Migrations
- Model building
- Proxies
- SaveChanges
- Change tracking
- Trimming/AOT
- Tools
Microsoft.Data.Sqlite
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 preview 1.
- LTS: EF Core 6.0.1
- Supported: EF Core 5.0.13
- Supported: EF Core 3.1.22
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
January 27, 2022
Expand to see status from this week...
Highlights
- Extensive new documentation on testing EF Core applications
- Testing with your production database system
- Testing with a database test double (e.g. SQLite)
- Mocking and repository patterns
- EF7 work progressing:
- New feature merged: Index sort order
- TPC and JSON column work in progress
- Making SQLite/WASM eaier in progress
- Unicorns Kickin`: The Entity Framework Rap
Latest Community Standup: Testing EF Core Apps
What’s the best way to run automated tests on an application that uses Entity Framework Core? In this episode, Jon P Smith (@thereformedprog), author of the book “Entity Framework Core in Action” covers three ways to create automated tests for your code and looks at the EF Core test “pain points” and how to get around them.
The .NET Data Community Standups are live-streamed every other Wednesday to Twitch, YouTube, and Twitter. This is your opportunity to interact with the .NET Data team and community. All past episodes are available on YouTube.
Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.
- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.1
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
- DateTime with z suffix is not respected when reading entities
- 'The object has been removed from the model.' when building model
- EF Core 6.0 regression when using HasDefaultSchema() with ToTable(null)
- Variable names must be unique within a query batch or stored procedure
- Stack overflow when using circular composite key dependencies
- SqliteConnectionFactory.cs is not thread-safe
- EF Core 6.0 InvalidOperationException: The object has been removed from the model
- Subquery.Contains throws when the type of item is value type
- Query with n:m relation adds non-existent column
- InvalidOperationException "sequence contains no matching element" in TableReferenceExpression.get_Table
- Update from 5.0.1 to 6.0breaks all SqliteConnection
- Scaffolder throws error if junction table foreign key columns have identical names
- EFCore 6 - NullReferenceException upon EnsureDeleted
- Non-nullable value comparer can't be applied on nullable type
- Exception in SQL server query in EF Core 6, looks related to HasQueryFilter(), worked in EF Core 5
- RC2 Sqlite provider no longer clears temporary files on exit
- The dotnet ef dbcontext scaffold command does not print all expected logs
EF Core 5.0.13
EF Core 5.0.13 is available on NuGet now. This is a patch release of EF Core 5.0 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 5.0.12.
EF Core 3.1.22
EF Core 3.1.22 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.21.
Pull requests merged since the last update
Community contributions
- @cocowalla: fix: #27138, stream with 64-bit PK
- @Marusyk: Add overload to SqlServerDbContextOptionsBuilder.EnableRetryOnFailure with errorNumbersToAdd without forcing maxRetryCount and maxRetryDelay
- @kaypee90: [Fixes grammatical error in EF Core Advanced Performance Topics Doc, under Compiled queries]
- @Azayzel: Update Spelling
- @v-haiboz: Task#536167:[Refresh link]Replace bookmarks in repo
Many thanks to all our contributors!
EF Core
- Query
- There's no escape from those cold north winds
- Update NorthwindMiscellaneousQueryCosmosTest.cs
- (6.0.2) Match joined tables properly when lifting for group by aggregate
- Don't skip any parameter in projection
- Mark SelectExpression as immutable after projection has been applied
- Fix non-deterministic tests that fail on postgres
- Convert query tests to conditional theory
- Dependencies
- Documentation
- Miscellaneous
- Temporal tables
- Model building
- Change tracking
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 preview 1.
- LTS: EF Core 6.0.1
- Supported: EF Core 5.0.13
- Supported: EF Core 3.1.22
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
February 28, 2022
Expand to see status from this week...
Highlights
- EF Core 7.0 (EF7) preview 1 is on NuGet now
- Preview 1 does not contain any big new features. However, preview 1 does contain 29 bug fixes and 30 smaller enhancements. See the GitHub release page for more information.
- EF Core 6.0.2 is on NuGet now with 15 important bug fixes. See the GitHub release page for more information.
Apologies for the short break in biweekly updates. Barring unforeseen circumstances, we are now back to our regular cadence.
Latest Community Standup: Celebrating 20 Years of .NET: Entity Framework
As .NET celebrates its 20th birthday, Entity Framework approaches its 10-year anniversary of going open source. The Entity Framework team celebrates these milestones by inviting back the engineers and program managers who helped shipped previous versions to share their stories, demos, and anecdotes. Join Tim Laverty, Rowan Miller, Danny Simmons, Diego Vega, Andrew Peters, Julie Lerman, and the team for this special edition of the .NET Data community standup.
The .NET Data Community Standups are live-streamed every other Wednesday to Twitch, YouTube, and Twitter. This is your opportunity to interact with the .NET Data team and community. All past episodes are available on YouTube.
Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 1
EF Core 7.0 (EF7) preview 1 is available from NuGet
Preview 1 does not contain any big new features. However, preview 1 does contain 29 bug fixes and the 30 smaller enhancements, including:
- 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.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.2
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
- Exception when creating new migration after updating from 6.0-rc.1 to 6.0-rc.2 or 6.0-rtm
- efcore6 produces wrong SELECT SQL when Where/OrderBy clauses are applied to Owned properties followed by .Take
- Proxies using Records with a base class broken since .NET 6
- Parentheses put around IS NULL only if operand is of type boolean
- Self-referencing entity circular dependency happening just on EF Core 6.0
- Many To Many Exception when adding and removing same entity
- RelationalConnection.Close calls async function
- Circular dependency while creating tables with DatabaseFacade.EnsureCreated on EF Core 6
- EF Core Migration Bundles: no way to passthrough custom args to generated efbundle
- Did the naming convention change for HasCheckConstraint in v.6? Is this a breaking change?
- Generated JOIN for multiple MIN is wrong
- StackOverflowException in nested GroupBy query
- When trimming, queries fail because of missing System.Math
- GroupBy with outer reference not translating properly, causing data loss
- EF 6.0.0 and 6.0.1: sub-lists are no longer loaded
EF Core 5.0.14
EF Core 5.0.14 is available on NuGet now. This is a patch release of EF Core 5.0 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 5.0.13.
EF Core 3.1.22
EF Core 3.1.22 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.21.
Pull requests merged since the last update
Community contributions
- @leniency: (6.0.3) Fix for the optimizer when an entity has a collection property that references itself
- @Casper-Olsen: Update breaking-changes.md
- @ojraqueno: Update user-defined-function-mapping.md
- @khellang: EntityFrameworkCore.Sqlite.NodaTime - Add EF Core 6 to list of supported versions
- @Thomas-X: Fix small typo
- @jessegood: Updated Collations and Case Sensitivity
Many thanks to all our contributors!
EF Core
- Query
- Dependencies
- Documentation
- Migrations
- Miscellaneous
- Temporal tables
- DbContext
- Change tracking
- Scaffolding
- (6.0.3) RevEng: Don't use nameof syntax
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 preview 1.
- LTS: EF Core 6.0.2
- Supported: EF Core 5.0.14
- Supported: EF Core 3.1.22
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
March 17, 2022
Expand to see status from this week...
Highlights
Releases
- EF Core 7.0 (EF7) preview 2 is on NuGet now.
- EF Core 6.0.3 is on NuGet now.
See the GitHub releases page for more information.
EF7 features merged to daily builds
- Attribute mapping for composite primary keys
- Scaffolding using T4 text templates
- Metadata support for TPC inheritance mapping
New documentation
- Support multi-tenant databases
- Azure Cosmos DB Provider - Planetary Docs sample
- Support policies for EF1, EF4, EF4.x EF5, EF6, and EF Core
Community Standup: GraphQL and OData--An In-Depth Discussion
The creator of the GraphQL library HotChocolate, Michael Staib (@michael_staib), and Microsoft engineer and OData expert Hassan Habib (@HassanRezkHabib) discuss the various capabilities of GraphQL and OData and how they empower developers to go beyond REST. Watch the full recording on YouTube.
Coming next week: Good pagination practices in SQL and EF Core
The .NET Data Community Standups are live-streamed every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 2
EF Core 7.0 (EF7) preview 2 is available from NuGet
Previews 1 and 2 do not contain any big new features. However, these previews do contain 30 bug fixes and the 33 smaller enhancements, including:
- 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 and preview 2.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.3
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
- FirstOrDefault after custom projection == null cannot be translated
- DbContext scaffolding creates reference error CS0120 in nameof() for InverseProperty in certain conditions
- EF core 6 selecting null values despite where clause asking for not null
- Query: Rownumber conversion needs better logic to figure out partitions
- Suboptimal SQL generation for query with optional navigation, its collection navigation and lateral join
- Aggregates on multiple child tables produces invalid SQL
- ServiceProviderCache keeps initially created IServiceProvider indefinitely
- Setting a Nullable Foreign Key property to Null triggers cascade delete
- Optimize hangs and stops responding
In addition, the following issues were fixed in the 6.0.1 and 6.0.2 releases:
- Exception when creating new migration after updating from 6.0-rc.1 to 6.0-rc.2 or 6.0-rtm
- efcore6 produces wrong SELECT SQL when Where/OrderBy clauses are applied to Owned properties followed by .Take
- Proxies using Records with a base class broken since .NET 6
- Parentheses put around IS NULL only if operand is of type boolean
- Self-referencing entity circular dependency happening just on EF Core 6.0
- Many To Many Exception when adding and removing same entity
- RelationalConnection.Close calls async function
- Circular dependency while creating tables with DatabaseFacade.EnsureCreated on EF Core 6
- EF Core Migration Bundles: no way to passthrough custom args to generated efbundle
- Did the naming convention change for HasCheckConstraint in v.6? Is this a breaking change?
- Generated JOIN for multiple MIN is wrong
- StackOverflowException in nested GroupBy query
- When trimming, queries fail because of missing System.Math
- GroupBy with outer reference not translating properly, causing data loss
- EF 6.0.0 and 6.0.1: sub-lists are no longer loaded
- DateTime with z suffix is not respected when reading entities
- 'The object has been removed from the model.' when building model
- EF Core 6.0 regression when using HasDefaultSchema() with ToTable(null)
- Variable names must be unique within a query batch or stored procedure
- Stack overflow when using circular composite key dependencies
- SqliteConnectionFactory.cs is not thread-safe
- EF Core 6.0 InvalidOperationException: The object has been removed from the model
- Subquery.Contains throws when the type of item is value type
- Query with n:m relation adds non-existent column
- InvalidOperationException "sequence contains no matching element" in TableReferenceExpression.get_Table
- Update from 5.0.1 to 6.0breaks all SqliteConnection
- Scaffolder throws error if junction table foreign key columns have identical names
- EFCore 6 - NullReferenceException upon EnsureDeleted
- Non-nullable value comparer can't be applied on nullable type
- Exception in SQL server query in EF Core 6, looks related to HasQueryFilter(), worked in EF Core 5
- RC2 Sqlite provider no longer clears temporary files on exit
- The dotnet ef dbcontext scaffold command does not print all expected logs
EF Core 5.0.15
EF Core 5.0.15 is available on NuGet now. This is a patch release of EF Core 5.0 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 5.0.14.
EF Core 3.1.23
EF Core 3.1.23 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.22.
Pull requests merged since the last update
Community contributions
- @WeihanLi: Remove DisableImplicitNamespaceImports config
- @ShreyasJejurkar: feat (codespaces) - Add initial support for codespaces
- @jmartens: Fix: Ordered list in example class definitions
- @Vadimyan: Fix a link to Including & Excluding Properties in Backing Fields|Basic configuration section
- @Vadimyan: Change "in lieu of" to a more common similar phrase
Many thanks to all our contributors!
EF Core
- Documentation
- Fix doc link type
- Fix testing sample links
- Document that value-converted types aren't support in raw SQL
- Correct schema in basic sequence sample
- Document ToInMemoryQuery and re-introduce sample code
- Add docs on stateful context pool
- Move .gitignore back to root
- Use file-scoped namespaces everywhere in samples
- Add multitenancy
- Miscellaneous
- Model building
- Scaffolding
- Migrations
- Dependencies
- SaveChanges
- Query
- Change tracking
Microsoft.Data.Sqlite
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 preview 1.
- LTS: EF Core 6.0.3
- Supported: EF Core 5.0.15
- Supported: EF Core 3.1.23
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
March 31, 2022
Expand to see status from this week...
Highlights
Work on EF7 is progressing well:
- Multiple PRs merged for SaveChanges performance
- Migrations for TPC inheritance mapping merged
- Support for UTF8 strings in SQL Server
Proof of concept: Generate Mermaid entity-relationship diagrams from an EF Core model directly into a .NET Interactive Notebook in VS Code, starting with just a database.
Community Standup: GraphQL and OData--An In-Depth Discussion
The creator of the GraphQL library HotChocolate, Michael Staib (@michael_staib), and Microsoft engineer and OData expert Hassan Habib (@HassanRezkHabib) discuss the various capabilities of GraphQL and OData and how they empower developers to go beyond REST. Watch the full recording on YouTube.
The .NET Data Community Standups are live-streamed every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 2
EF Core 7.0 (EF7) preview 2 is available from NuGet
Previews 1 and 2 do not contain any big new features. However, these previews do contain 30 bug fixes and the 33 smaller enhancements, including:
- 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 and preview 2.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.3
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
- FirstOrDefault after custom projection == null cannot be translated
- DbContext scaffolding creates reference error CS0120 in nameof() for InverseProperty in certain conditions
- EF core 6 selecting null values despite where clause asking for not null
- Query: Rownumber conversion needs better logic to figure out partitions
- Suboptimal SQL generation for query with optional navigation, its collection navigation and lateral join
- Aggregates on multiple child tables produces invalid SQL
- ServiceProviderCache keeps initially created IServiceProvider indefinitely
- Setting a Nullable Foreign Key property to Null triggers cascade delete
- Optimize hangs and stops responding
In addition, the following issues were fixed in the 6.0.1 and 6.0.2 releases:
- Exception when creating new migration after updating from 6.0-rc.1 to 6.0-rc.2 or 6.0-rtm
- efcore6 produces wrong SELECT SQL when Where/OrderBy clauses are applied to Owned properties followed by .Take
- Proxies using Records with a base class broken since .NET 6
- Parentheses put around IS NULL only if operand is of type boolean
- Self-referencing entity circular dependency happening just on EF Core 6.0
- Many To Many Exception when adding and removing same entity
- RelationalConnection.Close calls async function
- Circular dependency while creating tables with DatabaseFacade.EnsureCreated on EF Core 6
- EF Core Migration Bundles: no way to passthrough custom args to generated efbundle
- Did the naming convention change for HasCheckConstraint in v.6? Is this a breaking change?
- Generated JOIN for multiple MIN is wrong
- StackOverflowException in nested GroupBy query
- When trimming, queries fail because of missing System.Math
- GroupBy with outer reference not translating properly, causing data loss
- EF 6.0.0 and 6.0.1: sub-lists are no longer loaded
- DateTime with z suffix is not respected when reading entities
- 'The object has been removed from the model.' when building model
- EF Core 6.0 regression when using HasDefaultSchema() with ToTable(null)
- Variable names must be unique within a query batch or stored procedure
- Stack overflow when using circular composite key dependencies
- SqliteConnectionFactory.cs is not thread-safe
- EF Core 6.0 InvalidOperationException: The object has been removed from the model
- Subquery.Contains throws when the type of item is value type
- Query with n:m relation adds non-existent column
- InvalidOperationException "sequence contains no matching element" in TableReferenceExpression.get_Table
- Update from 5.0.1 to 6.0breaks all SqliteConnection
- Scaffolder throws error if junction table foreign key columns have identical names
- EFCore 6 - NullReferenceException upon EnsureDeleted
- Non-nullable value comparer can't be applied on nullable type
- Exception in SQL server query in EF Core 6, looks related to HasQueryFilter(), worked in EF Core 5
- RC2 Sqlite provider no longer clears temporary files on exit
- The dotnet ef dbcontext scaffold command does not print all expected logs
EF Core 5.0.15
EF Core 5.0.15 is available on NuGet now. This is a patch release of EF Core 5.0 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 5.0.14.
EF Core 3.1.23
EF Core 3.1.23 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.22.
Pull requests merged since the last update
Community contributions
- @AraHaan: Update tool to roll forward to latest major version of runtime installed.
- @patrickklaeren: Fix missing Simple Logging region
- @erhanalankus: Fix Grammar
- @erhanalankus: Fix Typo
Many thanks to all our contributors!
EF Core
- SaveChanges
- Documentation
- Dependencies
- Miscellaneous
- Migrations
- Change tracking
- SQL Server
- Cosmos
Microsoft.Data.Sqlite
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 preview 1.
- LTS: EF Core 6.0.3
- Supported: EF Core 5.0.15
- Supported: EF Core 3.1.23
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
April 18, 2022
Expand to see status from this week...
Highlights
Releases
- EF Core 7.0 (EF7) preview 3 is on NuGet now
- Attribute mapping for composite primary keys
- UTF8 strings with SQL Server
- SaveChanges performance enhancements
- EF Core 6.0.4 is on NuGet now
See the GitHub releases page for more information.
EF7 features merged to daily builds
- Value generation supported for simple types wrapped in value objects
- TPC support for SaveChanges
Community Standup: Database-first with T4 Templates in EF7: Early look
Prefer null setters? Property initializers? Constructor initialization? What about auto-generating database diagrams that render in markdown using Mermaid? Learn how to take control of your database scaffolding in this early look at an EF7 feature that's hot off the press. Watch the full recording on YouTube.
The .NET Data Community Standups are live-streamed every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 3
EF Core 7.0 (EF7) preview 3 is available from NuGet
Previews 1, 2, and 3 do not contain any big new features. However, these previews do contain 38 bug fixes and 46 smaller enhancements, including:
- 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, and preview 3.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.4
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
- Exception from SQLite provider when application is shutting down
- Collection_navigation_equal_to_null_for_subquery fails after merging from release/6.0
- EF Core 6.0 temporal tables - migration rollback doesn't work
- InvalidOperationException on save after upgrading from 5 to 6
In addition, the following issues were fixed in the 6.0.1, 6.0.2, and 6.0.3 releases:
- FirstOrDefault after custom projection == null cannot be translated
- DbContext scaffolding creates reference error CS0120 in nameof() for InverseProperty in certain conditions
- EF core 6 selecting null values despite where clause asking for not null
- Query: Rownumber conversion needs better logic to figure out partitions
- Suboptimal SQL generation for query with optional navigation, its collection navigation and lateral join
- Aggregates on multiple child tables produces invalid SQL
- ServiceProviderCache keeps initially created IServiceProvider indefinitely
- Setting a Nullable Foreign Key property to Null triggers cascade delete
- Optimize hangs and stops responding
- Exception when creating new migration after updating from 6.0-rc.1 to 6.0-rc.2 or 6.0-rtm
- efcore6 produces wrong SELECT SQL when Where/OrderBy clauses are applied to Owned properties followed by .Take
- Proxies using Records with a base class broken since .NET 6
- Parentheses put around IS NULL only if operand is of type boolean
- Self-referencing entity circular dependency happening just on EF Core 6.0
- Many To Many Exception when adding and removing same entity
- RelationalConnection.Close calls async function
- Circular dependency while creating tables with DatabaseFacade.EnsureCreated on EF Core 6
- EF Core Migration Bundles: no way to passthrough custom args to generated efbundle
- Did the naming convention change for HasCheckConstraint in v.6? Is this a breaking change?
- Generated JOIN for multiple MIN is wrong
- StackOverflowException in nested GroupBy query
- When trimming, queries fail because of missing System.Math
- GroupBy with outer reference not translating properly, causing data loss
- EF 6.0.0 and 6.0.1: sub-lists are no longer loaded
- DateTime with z suffix is not respected when reading entities
- 'The object has been removed from the model.' when building model
- EF Core 6.0 regression when using HasDefaultSchema() with ToTable(null)
- Variable names must be unique within a query batch or stored procedure
- Stack overflow when using circular composite key dependencies
- SqliteConnectionFactory.cs is not thread-safe
- EF Core 6.0 InvalidOperationException: The object has been removed from the model
- Subquery.Contains throws when the type of item is value type
- Query with n:m relation adds non-existent column
- InvalidOperationException "sequence contains no matching element" in TableReferenceExpression.get_Table
- Update from 5.0.1 to 6.0breaks all SqliteConnection
- Scaffolder throws error if junction table foreign key columns have identical names
- EFCore 6 - NullReferenceException upon EnsureDeleted
- Non-nullable value comparer can't be applied on nullable type
- Exception in SQL server query in EF Core 6, looks related to HasQueryFilter(), worked in EF Core 5
- RC2 Sqlite provider no longer clears temporary files on exit
- The dotnet ef dbcontext scaffold command does not print all expected logs
EF Core 5.0.16
EF Core 5.0.16 is available on NuGet now. This is a patch release of EF Core 5.0 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 5.0.15.
EF Core 3.1.24
EF Core 3.1.24 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.23.
Pull requests merged since the last update
Community contributions
- @AraHaan: Remove needless package references in EFCore
- @charliemerrell: Update tracking.md
- @erhanalankus: Add What MARS abbreviation stands for
- @erhanalankus: Fix Typo
- @erhanalankus: Fix Typos
Many thanks to all our contributors!
EF Core
- Documentation
- Query
- SaveChanges
- Dependencies
- Miscellaneous
- Type mapping
- Cosmos
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 preview 1.
- LTS: EF Core 6.0.4
- Supported: EF Core 5.0.16
- Supported: EF Core 3.1.24
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
April 28, 2022
Expand to see status from this week...
Highlights
Learning videos
- Excellent new video series from Cam Soper focused on introducing EF Core to new developers.
- Earlier today was the Let's Learn .NET: Data event. We built a Web API using EF Core from scratch. If you missed it live, then catch it on-demand.
EF7 Progress
- Work on lifecycle hooks (events and interceptors) is now underway
- Further performance improvements for SaveChanges have been merged
EF7 Cuts
A combination of factors have resulted in a reduction in available resources for EF7. This means we have had to cut or scope some planned work. This includes:
- Evolve System.Linq.Expression has been cut for now.
- Translate new LINQ operators has been cut for now.
- Open telemetry for ADO.NET providers has been cut for now.
- Improvements to Migrations experience have been significantly scoped.
In addition, some smaller enhancements have also been cut. For a complete list, see issues labeled with punted-for-7.0
in the EF GitHub repo.
Community Standup: Performance Improvements to the EF7 Update Pipeline
Join the Entity Framework team as we review optimizations to the update pipeline (SaveChanges) to improve performance. Also includes answers to many performance questions asked during the live show.
The .NET Data Community Standups are live-streamed every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 3
EF Core 7.0 (EF7) preview 3 is available from NuGet
Previews 1, 2, and 3 do not contain any big new features. However, these previews do contain 38 bug fixes and 46 smaller enhancements, including:
- 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, and preview 3.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.4
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
- Exception from SQLite provider when application is shutting down
- Collection_navigation_equal_to_null_for_subquery fails after merging from release/6.0
- EF Core 6.0 temporal tables - migration rollback doesn't work
- InvalidOperationException on save after upgrading from 5 to 6
In addition, the following issues were fixed in the 6.0.1, 6.0.2, and 6.0.3 releases:
- FirstOrDefault after custom projection == null cannot be translated
- DbContext scaffolding creates reference error CS0120 in nameof() for InverseProperty in certain conditions
- EF core 6 selecting null values despite where clause asking for not null
- Query: Rownumber conversion needs better logic to figure out partitions
- Suboptimal SQL generation for query with optional navigation, its collection navigation and lateral join
- Aggregates on multiple child tables produces invalid SQL
- ServiceProviderCache keeps initially created IServiceProvider indefinitely
- Setting a Nullable Foreign Key property to Null triggers cascade delete
- Optimize hangs and stops responding
- Exception when creating new migration after updating from 6.0-rc.1 to 6.0-rc.2 or 6.0-rtm
- efcore6 produces wrong SELECT SQL when Where/OrderBy clauses are applied to Owned properties followed by .Take
- Proxies using Records with a base class broken since .NET 6
- Parentheses put around IS NULL only if operand is of type boolean
- Self-referencing entity circular dependency happening just on EF Core 6.0
- Many To Many Exception when adding and removing same entity
- RelationalConnection.Close calls async function
- Circular dependency while creating tables with DatabaseFacade.EnsureCreated on EF Core 6
- EF Core Migration Bundles: no way to passthrough custom args to generated efbundle
- Did the naming convention change for HasCheckConstraint in v.6? Is this a breaking change?
- Generated JOIN for multiple MIN is wrong
- StackOverflowException in nested GroupBy query
- When trimming, queries fail because of missing System.Math
- GroupBy with outer reference not translating properly, causing data loss
- EF 6.0.0 and 6.0.1: sub-lists are no longer loaded
- DateTime with z suffix is not respected when reading entities
- 'The object has been removed from the model.' when building model
- EF Core 6.0 regression when using HasDefaultSchema() with ToTable(null)
- Variable names must be unique within a query batch or stored procedure
- Stack overflow when using circular composite key dependencies
- SqliteConnectionFactory.cs is not thread-safe
- EF Core 6.0 InvalidOperationException: The object has been removed from the model
- Subquery.Contains throws when the type of item is value type
- Query with n:m relation adds non-existent column
- InvalidOperationException "sequence contains no matching element" in TableReferenceExpression.get_Table
- Update from 5.0.1 to 6.0breaks all SqliteConnection
- Scaffolder throws error if junction table foreign key columns have identical names
- EFCore 6 - NullReferenceException upon EnsureDeleted
- Non-nullable value comparer can't be applied on nullable type
- Exception in SQL server query in EF Core 6, looks related to HasQueryFilter(), worked in EF Core 5
- RC2 Sqlite provider no longer clears temporary files on exit
- The dotnet ef dbcontext scaffold command does not print all expected logs
EF Core 5.0.16
EF Core 5.0.16 is available on NuGet now. This is a patch release of EF Core 5.0 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 5.0.15.
EF Core 3.1.24
EF Core 3.1.24 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.23.
Pull requests merged since the last update
Community contributions
- @bbonch: Fix tests in StoreGeneratedTestBase
- @naveensrinivasan: Set permissions for GitHub actions
- @cincuranet: Bump version for Firebird provider
- @eersonmez: Update transactions.md
- @erhanalankus: Fix Typo
- @slch: Fix JOINs in examples
Many thanks to all our contributors!
EF Core
- SaveChanges
- Lifecycle hooks
- Documentation
- Query
- Dependencies
- Miscellaneous
- DbContext
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 preview 1.
- LTS: EF Core 6.0.4
- Supported: EF Core 5.0.16
- Supported: EF Core 3.1.24
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
May 26, 2022
Expand to see status from this week...
Highlights
Releases
- EF Core 7.0 (EF7) preview 4 is on NuGet now
- Value generation supported for simple types wrapped in value objects
- EF Core 6.0.5 is on NuGet now
- EF Core 5.0.x is now out-of-support
See the GitHub releases page for more information.
EF7 features merged to daily builds
- Table-per-Concrete-Type (TPC) mapping support is now complete!
- 26 query improvements merged!
- Full support for custom provider aggregate functions
Community Standup: Database Pagination
Too much data for one page? You need pagination! But, how? Skip
and Take
is easy, but isn't there something better? Yes! Keyset Pagination! Mohammed Rahhal joins the .NET Data team to talk about keyset pagination in general, and specifically how to do it with EF Core.
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
Community Standup: Testing EF Core Apps (Part 2)
In this second session on testing EF Core apps, guest Jon P Smith focuses on the actual code and approaches that you need to test applications using EF Core and addresses some key pain points.
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 4
EF Core 7.0 (EF7) preview 4 is available from NuGet
Preview 4 contains the following new features:
Preview 4 also includes the following new features from previews 1 through 3:
- 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, and preview 4.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.5
-
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
In addition, the following issues were fixed in the 6.0.1, 6.0.2, 6.0.3, and 6.0.4 releases:
- Exception from SQLite provider when application is shutting down
- Collection_navigation_equal_to_null_for_subquery fails after merging from release/6.0
- EF Core 6.0 temporal tables - migration rollback doesn't work
- InvalidOperationException on save after upgrading from 5 to 6
- FirstOrDefault after custom projection == null cannot be translated
- DbContext scaffolding creates reference error CS0120 in nameof() for InverseProperty in certain conditions
- EF core 6 selecting null values despite where clause asking for not null
- Query: Rownumber conversion needs better logic to figure out partitions
- Suboptimal SQL generation for query with optional navigation, its collection navigation and lateral join
- Aggregates on multiple child tables produces invalid SQL
- ServiceProviderCache keeps initially created IServiceProvider indefinitely
- Setting a Nullable Foreign Key property to Null triggers cascade delete
- Optimize hangs and stops responding
- Exception when creating new migration after updating from 6.0-rc.1 to 6.0-rc.2 or 6.0-rtm
- efcore6 produces wrong SELECT SQL when Where/OrderBy clauses are applied to Owned properties followed by .Take
- Proxies using Records with a base class broken since .NET 6
- Parentheses put around IS NULL only if operand is of type boolean
- Self-referencing entity circular dependency happening just on EF Core 6.0
- Many To Many Exception when adding and removing same entity
- RelationalConnection.Close calls async function
- Circular dependency while creating tables with DatabaseFacade.EnsureCreated on EF Core 6
- EF Core Migration Bundles: no way to passthrough custom args to generated efbundle
- Did the naming convention change for HasCheckConstraint in v.6? Is this a breaking change?
- Generated JOIN for multiple MIN is wrong
- StackOverflowException in nested GroupBy query
- When trimming, queries fail because of missing System.Math
- GroupBy with outer reference not translating properly, causing data loss
- EF 6.0.0 and 6.0.1: sub-lists are no longer loaded
- DateTime with z suffix is not respected when reading entities
- 'The object has been removed from the model.' when building model
- EF Core 6.0 regression when using HasDefaultSchema() with ToTable(null)
- Variable names must be unique within a query batch or stored procedure
- Stack overflow when using circular composite key dependencies
- SqliteConnectionFactory.cs is not thread-safe
- EF Core 6.0 InvalidOperationException: The object has been removed from the model
- Subquery.Contains throws when the type of item is value type
- Query with n:m relation adds non-existent column
- InvalidOperationException "sequence contains no matching element" in TableReferenceExpression.get_Table
- Update from 5.0.1 to 6.0breaks all SqliteConnection
- Scaffolder throws error if junction table foreign key columns have identical names
- EFCore 6 - NullReferenceException upon EnsureDeleted
- Non-nullable value comparer can't be applied on nullable type
- Exception in SQL server query in EF Core 6, looks related to HasQueryFilter(), worked in EF Core 5
- RC2 Sqlite provider no longer clears temporary files on exit
- The dotnet ef dbcontext scaffold command does not print all expected logs
EF Core 3.1.25
EF Core 3.1.25 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.24.
Pull requests merged since the last update
Community contributions
- @Kjelli: Cleanup trailing end tag in documentation
- @ilmalte: Capitalize database name
- @Vekz: Attribute for configuring DeleteBehavior
- @KevRitchie: Add Migration name check
- @slch: Fix JOINs in examples
- @w-syss: Change "perf" to "performance"
- @SeanKilleen: Move warning to the top of the section
- @macel94: Remove warning about #23408
- @danielniccoli: Top-level statements for EFGetStarted
Many thanks to all our contributors!
EF Core
- Query
- Add TPC test bases
- Translate aggregate over grouping element in separate pass
- (6.0.6) Reset read count on RelationalDataReader
- Add support for TPC
- Introduce EnumerableExpression which is not SQL token
- Infer type mapping from IDbFunction while translating
- TPC prune unused concrete tables and columns
- Update SQL baselines
- Remove the requirement that instance or first argument would be enumerable in aggregate function
- Add support for custom aggregate operators
- Use accurate generic types in group join flattening
- Add AtTimeZoneExpression and some relevant translations
- Update test for #23303
- Don't add grouping key to projection when Distinct is applied
- Add more cast nodes in multi-line breaks during migrations
- Update exception message for optional dependent without identifying property
- Optimize usage of GetViewOrTableMappings
- API review changes
- Add interface to get ITableBase for root level table sources
- Fix some nullability errors
- Minor refactoring in shaper
- Block arithmetic on date/time expressions when type mapping is not known
- Change RelationalCommandCache to allow non-SelectExpression as query expression
- Translate GetType == type on hierarchy
- Assign correct type/typemapping to result of Round on SqlServer
- Improve SQL Server IndexOf translation and change tests to use Where
- Dependencies
- SaveChanges
- Trimming:
- Model building
- Lifecycle hooks
- Documentation
- Migrations
- Tools
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 previews.
- Preview: EF Core 7.0.0 preview 4
- LTS: EF Core 6.0.5
- Supported: EF Core 3.1.25
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
June 9, 2022
Expand to see status from this week...
Highlights
- Merged for .NET 7/EF7:
- Out for review:
- Now in-progress:
- Woodstar (modern, high-perf driver for SQL Server/Azure SQL)
- Distributed transactions support
Community Standup: EF Core Architecture--Internal Dependency Injection
Arthur and others from the EF Team start a deep dive into the architecture of Entity Framework Core. This code-driven discussion looking at how and why things are designed and implemented the way they are. In this session, we look at the use of dependency injection (D.I.) and the “internal service provider.” This is the backbone of how EF Core works as a service-oriented architecture, where the core code, database providers, and plugins all implement services that work together to provide EF’s functionality.
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 4
EF Core 7.0 (EF7) preview 4 is available from NuGet
Preview 4 contains the following new features:
Preview 4 also includes the following new features from previews 1 through 3:
- 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, and preview 4.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.5
-
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
In addition, the following issues were fixed in the 6.0.1, 6.0.2, 6.0.3, and 6.0.4 releases:
- Exception from SQLite provider when application is shutting down
- Collection_navigation_equal_to_null_for_subquery fails after merging from release/6.0
- EF Core 6.0 temporal tables - migration rollback doesn't work
- InvalidOperationException on save after upgrading from 5 to 6
- FirstOrDefault after custom projection == null cannot be translated
- DbContext scaffolding creates reference error CS0120 in nameof() for InverseProperty in certain conditions
- EF core 6 selecting null values despite where clause asking for not null
- Query: Rownumber conversion needs better logic to figure out partitions
- Suboptimal SQL generation for query with optional navigation, its collection navigation and lateral join
- Aggregates on multiple child tables produces invalid SQL
- ServiceProviderCache keeps initially created IServiceProvider indefinitely
- Setting a Nullable Foreign Key property to Null triggers cascade delete
- Optimize hangs and stops responding
- Exception when creating new migration after updating from 6.0-rc.1 to 6.0-rc.2 or 6.0-rtm
- efcore6 produces wrong SELECT SQL when Where/OrderBy clauses are applied to Owned properties followed by .Take
- Proxies using Records with a base class broken since .NET 6
- Parentheses put around IS NULL only if operand is of type boolean
- Self-referencing entity circular dependency happening just on EF Core 6.0
- Many To Many Exception when adding and removing same entity
- RelationalConnection.Close calls async function
- Circular dependency while creating tables with DatabaseFacade.EnsureCreated on EF Core 6
- EF Core Migration Bundles: no way to passthrough custom args to generated efbundle
- Did the naming convention change for HasCheckConstraint in v.6? Is this a breaking change?
- Generated JOIN for multiple MIN is wrong
- StackOverflowException in nested GroupBy query
- When trimming, queries fail because of missing System.Math
- GroupBy with outer reference not translating properly, causing data loss
- EF 6.0.0 and 6.0.1: sub-lists are no longer loaded
- DateTime with z suffix is not respected when reading entities
- 'The object has been removed from the model.' when building model
- EF Core 6.0 regression when using HasDefaultSchema() with ToTable(null)
- Variable names must be unique within a query batch or stored procedure
- Stack overflow when using circular composite key dependencies
- SqliteConnectionFactory.cs is not thread-safe
- EF Core 6.0 InvalidOperationException: The object has been removed from the model
- Subquery.Contains throws when the type of item is value type
- Query with n:m relation adds non-existent column
- InvalidOperationException "sequence contains no matching element" in TableReferenceExpression.get_Table
- Update from 5.0.1 to 6.0breaks all SqliteConnection
- Scaffolder throws error if junction table foreign key columns have identical names
- EFCore 6 - NullReferenceException upon EnsureDeleted
- Non-nullable value comparer can't be applied on nullable type
- Exception in SQL server query in EF Core 6, looks related to HasQueryFilter(), worked in EF Core 5
- RC2 Sqlite provider no longer clears temporary files on exit
- The dotnet ef dbcontext scaffold command does not print all expected logs
EF Core 3.1.25
EF Core 3.1.25 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.24.
Pull requests merged since the last update
Community contributions
- @EfimenkoAndrew: Add support for System.Text.Json not including LazyLoader
- @Marusyk: Cosmos: Add translator for Regex.IsMatch method
- @Marusyk: Fix parameter type mapping for Sqlite
- @xinbingyiran: Correct SqliteType inference from string, DateOnly, TimeOnly
- @ExesoftInc: Update index.md
- @sten-bone: Add missing period
Many thanks to all our contributors!
EF Core
- Query
- Documentation
- Dependencies
- Lifecycle hooks
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 previews.
- Preview: EF Core 7.0.0 preview 4
- LTS: EF Core 6.0.5
- Supported: EF Core 3.1.25
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
June 23, 2022
Expand to see status from this week...
Highlights
Releases
- EF Core 7.0 (EF7) preview 5 is on NuGet now
- TPC inheritance mapping - read about it on the .NET Blog
DeleteBehaviorAttribute
- Command and Connection interceptor improvements
AT TIME ZONE
- Improved
GroupBy
support - Translation for
GetType()
- EF Core 6.0.6 is on NuGet now
See the GitHub releases page for more information.
EF7 features merged to daily builds
- Materialization interception (
ObjectMaterialized
but better!) - Identity resolution on Add/Attach/Update
- Entity-splitting support in model building
Community Standup: TPH, TPT, and TPC Inheritance mapping with EF Core
Type inheritance hierarchies as used in object-oriented programming do not map naturally to relational database schemas. In this edition of the .NET Community Standup, we look at different strategies for inheritance mapping when using EF Core with a relational database. This includes table-per-hierarchy (TPH) mapping, table-per-type (TPT) mapping, and table-per-concrete type (TPC) mapping, which is new in EF Core 7.0 preview 5. We explore the consequences of each mapping strategy on the generated SQL and consider the performance and storage implications.
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 5
EF Core 7.0 (EF7) preview 5 is available from NuGet
Preview 5 contains the following new features:
- 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
Preview 5 also includes the following new features from previews 1 through 4:
- 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, and preview 5.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.6
-
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
-
Diagnostics: DataReaderDisposingEventData.ReadCount accumulates the value from different readers
-
Consider setting NullabilityInfoContextSupport=true in EF's NuGet package
Note that this release contains a breaking change for the dotnet-ef
command line tool.
In addition, the following issues were fixed in the 6.0.1, 6.0.2, 6.0.3, 6.0.4, and 6.0.5 releases:
- Query exception after upgrading from 6.0.1 to 6.0.2
- Exception from SQLite provider when application is shutting down
- Collection_navigation_equal_to_null_for_subquery fails after merging from release/6.0
- EF Core 6.0 temporal tables - migration rollback doesn't work
- InvalidOperationException on save after upgrading from 5 to 6
- FirstOrDefault after custom projection == null cannot be translated
- DbContext scaffolding creates reference error CS0120 in nameof() for InverseProperty in certain conditions
- EF core 6 selecting null values despite where clause asking for not null
- Query: Rownumber conversion needs better logic to figure out partitions
- Suboptimal SQL generation for query with optional navigation, its collection navigation and lateral join
- Aggregates on multiple child tables produces invalid SQL
- ServiceProviderCache keeps initially created IServiceProvider indefinitely
- Setting a Nullable Foreign Key property to Null triggers cascade delete
- Optimize hangs and stops responding
- Exception when creating new migration after updating from 6.0-rc.1 to 6.0-rc.2 or 6.0-rtm
- efcore6 produces wrong SELECT SQL when Where/OrderBy clauses are applied to Owned properties followed by .Take
- Proxies using Records with a base class broken since .NET 6
- Parentheses put around IS NULL only if operand is of type boolean
- Self-referencing entity circular dependency happening just on EF Core 6.0
- Many To Many Exception when adding and removing same entity
- RelationalConnection.Close calls async function
- Circular dependency while creating tables with DatabaseFacade.EnsureCreated on EF Core 6
- EF Core Migration Bundles: no way to passthrough custom args to generated efbundle
- Did the naming convention change for HasCheckConstraint in v.6? Is this a breaking change?
- Generated JOIN for multiple MIN is wrong
- StackOverflowException in nested GroupBy query
- When trimming, queries fail because of missing System.Math
- GroupBy with outer reference not translating properly, causing data loss
- EF 6.0.0 and 6.0.1: sub-lists are no longer loaded
- DateTime with z suffix is not respected when reading entities
- 'The object has been removed from the model.' when building model
- EF Core 6.0 regression when using HasDefaultSchema() with ToTable(null)
- Variable names must be unique within a query batch or stored procedure
- Stack overflow when using circular composite key dependencies
- SqliteConnectionFactory.cs is not thread-safe
- EF Core 6.0 InvalidOperationException: The object has been removed from the model
- Subquery.Contains throws when the type of item is value type
- Query with n:m relation adds non-existent column
- InvalidOperationException "sequence contains no matching element" in TableReferenceExpression.get_Table
- Update from 5.0.1 to 6.0breaks all SqliteConnection
- Scaffolder throws error if junction table foreign key columns have identical names
- EFCore 6 - NullReferenceException upon EnsureDeleted
- Non-nullable value comparer can't be applied on nullable type
- Exception in SQL server query in EF Core 6, looks related to HasQueryFilter(), worked in EF Core 5
- RC2 Sqlite provider no longer clears temporary files on exit
- The dotnet ef dbcontext scaffold command does not print all expected logs
EF Core 3.1.26
EF Core 3.1.26 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.25.
Pull requests merged since the last update
Community contributions
Many thanks to all our contributors!
EF Core
- Model building
- Query
- Documentation
- Dependencies
- Lifecycle hooks
- Miscellaneous
- Scaffolding
- Tools
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 previews.
- Preview: EF Core 7.0.0 preview 5
- LTS: EF Core 6.0.6
- Supported: EF Core 3.1.26
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
July 7, 2022
Expand to see status from this week...
Highlights
Unfortunately, we have had to make some painful cuts to the EF7 plan. Most notably, value objects and raw SQL queries for unmapped types have been cut. These will be a high priority for the next release.
In better news, all interceptors and events for EF7 are now in the daily builds. This includes new interceptors for:
- Entity materialization
- Query expression trees
- Identity resolution in Attach
- Optimistic concurrency violations
- Constructor bindings
And improved interceptors for:
DbCommand
DbConnection
DbDataReader
Plus better state change events and new events for DetectChanges
.
Community Standup: DbContext Configuration and Lifetime - EF Core Architecture Part 2
Arthur and others from the EF Team continue their deep dive into the architecture of Entity Framework Core with this code-driven discussion looking at how and why things are designed and implemented the way they are. In this session, we look at the initialization and configuration of a DbContext instance, including selection of the provider, creating DbSet instances, reading DbContextOptions, and DbContext pooling.
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 5
EF Core 7.0 (EF7) preview 5 is available from NuGet
Preview 5 contains the following new features:
- 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
Preview 5 also includes the following new features from previews 1 through 4:
- 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, and preview 5.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.6
-
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
-
Diagnostics: DataReaderDisposingEventData.ReadCount accumulates the value from different readers
-
Consider setting NullabilityInfoContextSupport=true in EF's NuGet package
Note that this release contains a breaking change for the dotnet-ef
command line tool.
In addition, the following issues were fixed in the 6.0.1, 6.0.2, 6.0.3, 6.0.4, and 6.0.5 releases:
- Query exception after upgrading from 6.0.1 to 6.0.2
- Exception from SQLite provider when application is shutting down
- Collection_navigation_equal_to_null_for_subquery fails after merging from release/6.0
- EF Core 6.0 temporal tables - migration rollback doesn't work
- InvalidOperationException on save after upgrading from 5 to 6
- FirstOrDefault after custom projection == null cannot be translated
- DbContext scaffolding creates reference error CS0120 in nameof() for InverseProperty in certain conditions
- EF core 6 selecting null values despite where clause asking for not null
- Query: Rownumber conversion needs better logic to figure out partitions
- Suboptimal SQL generation for query with optional navigation, its collection navigation and lateral join
- Aggregates on multiple child tables produces invalid SQL
- ServiceProviderCache keeps initially created IServiceProvider indefinitely
- Setting a Nullable Foreign Key property to Null triggers cascade delete
- Optimize hangs and stops responding
- Exception when creating new migration after updating from 6.0-rc.1 to 6.0-rc.2 or 6.0-rtm
- efcore6 produces wrong SELECT SQL when Where/OrderBy clauses are applied to Owned properties followed by .Take
- Proxies using Records with a base class broken since .NET 6
- Parentheses put around IS NULL only if operand is of type boolean
- Self-referencing entity circular dependency happening just on EF Core 6.0
- Many To Many Exception when adding and removing same entity
- RelationalConnection.Close calls async function
- Circular dependency while creating tables with DatabaseFacade.EnsureCreated on EF Core 6
- EF Core Migration Bundles: no way to passthrough custom args to generated efbundle
- Did the naming convention change for HasCheckConstraint in v.6? Is this a breaking change?
- Generated JOIN for multiple MIN is wrong
- StackOverflowException in nested GroupBy query
- When trimming, queries fail because of missing System.Math
- GroupBy with outer reference not translating properly, causing data loss
- EF 6.0.0 and 6.0.1: sub-lists are no longer loaded
- DateTime with z suffix is not respected when reading entities
- 'The object has been removed from the model.' when building model
- EF Core 6.0 regression when using HasDefaultSchema() with ToTable(null)
- Variable names must be unique within a query batch or stored procedure
- Stack overflow when using circular composite key dependencies
- SqliteConnectionFactory.cs is not thread-safe
- EF Core 6.0 InvalidOperationException: The object has been removed from the model
- Subquery.Contains throws when the type of item is value type
- Query with n:m relation adds non-existent column
- InvalidOperationException "sequence contains no matching element" in TableReferenceExpression.get_Table
- Update from 5.0.1 to 6.0breaks all SqliteConnection
- Scaffolder throws error if junction table foreign key columns have identical names
- EFCore 6 - NullReferenceException upon EnsureDeleted
- Non-nullable value comparer can't be applied on nullable type
- Exception in SQL server query in EF Core 6, looks related to HasQueryFilter(), worked in EF Core 5
- RC2 Sqlite provider no longer clears temporary files on exit
- The dotnet ef dbcontext scaffold command does not print all expected logs
EF Core 3.1.26
EF Core 3.1.26 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.25.
Pull requests merged since the last update
Community contributions
- @yinzara: Add support for CSharpHelper for List literals
- @glen-84: Fix typo in Applying Migrations documentation
- @glen-84: Update pagination.md
- @Cogax: Fix InvalidOperationException
Many thanks to all our contributors!
EF Core
- Interceptors and events
- Migrations
- Tests
- Miscellaneous
- Model building
- Query
- Dependencies
- SaveChanges
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 previews.
- Preview: EF Core 7.0.0 preview 5
- LTS: EF Core 6.0.6
- Supported: EF Core 3.1.26
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
July 21, 2022
Expand to see status from this week...
Highlights
- EF Core now runs over 100,000 tests on every commit!
- EF Core 7.0 (EF7) preview 6 is on NuGet now
- Interception for materialization and identity resolution
- Model building with proxies is much faster
- Full support for custom provider aggregate functions
- Different column names per table in TPT and TPC
- New in the daily builds
- Unidirectional many-to-many relationships
- Make it easier to pass cancellation tokens to FindAsync
- Get entries for shared-type entity type instances
- UseProvider methods now accept null
Community Standup: Intercept this EF7 Preview 6 Event!
EF7 includes a variety of new interceptors and events, as well as many improvements to the existing lifecycle hooks. In this session, Arthur and others from the .NET Data team will dive into this new functionality, including examples for intercepting materialization of entities, query expression trees, and optimistic concurrency violations. Catch up on this fun-packed ride into the world of modifying EF behavior through interception with code galore!
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 6
EF Core 7.0 (EF7) preview 6 is available from NuGet
Preview 6 contains the following new features:
- 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
Preview 6 also includes the following new features from previews 1 through 5:
- 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, and , preview 6.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.7
-
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
-
Don't add grouping key to projection when Distinct is applied
In addition, the following issues were fixed in the 6.0.1, 6.0.2, 6.0.3, 6.0.4, 6.0.5, and 6.0.6 releases:
- Can't create a view with navigation property
- Tools: Add dotnet-ef shims arm64
- Diagnostics: DataReaderDisposingEventData.ReadCount accumulates the value from different readers
- Consider setting NullabilityInfoContextSupport=true in EF's NuGet package
- SQLite doesn't work when trimming
- dotnet-ef needs to target 6
- Query exception after upgrading from 6.0.1 to 6.0.2
- Exception from SQLite provider when application is shutting down
- Collection_navigation_equal_to_null_for_subquery fails after merging from release/6.0
- EF Core 6.0 temporal tables - migration rollback doesn't work
- InvalidOperationException on save after upgrading from 5 to 6
- FirstOrDefault after custom projection == null cannot be translated
- DbContext scaffolding creates reference error CS0120 in nameof() for InverseProperty in certain conditions
- EF core 6 selecting null values despite where clause asking for not null
- Query: Rownumber conversion needs better logic to figure out partitions
- Suboptimal SQL generation for query with optional navigation, its collection navigation and lateral join
- Aggregates on multiple child tables produces invalid SQL
- ServiceProviderCache keeps initially created IServiceProvider indefinitely
- Setting a Nullable Foreign Key property to Null triggers cascade delete
- Optimize hangs and stops responding
- Exception when creating new migration after updating from 6.0-rc.1 to 6.0-rc.2 or 6.0-rtm
- efcore6 produces wrong SELECT SQL when Where/OrderBy clauses are applied to Owned properties followed by .Take
- Proxies using Records with a base class broken since .NET 6
- Parentheses put around IS NULL only if operand is of type boolean
- Self-referencing entity circular dependency happening just on EF Core 6.0
- Many To Many Exception when adding and removing same entity
- RelationalConnection.Close calls async function
- Circular dependency while creating tables with DatabaseFacade.EnsureCreated on EF Core 6
- EF Core Migration Bundles: no way to passthrough custom args to generated efbundle
- Did the naming convention change for HasCheckConstraint in v.6? Is this a breaking change?
- Generated JOIN for multiple MIN is wrong
- StackOverflowException in nested GroupBy query
- When trimming, queries fail because of missing System.Math
- GroupBy with outer reference not translating properly, causing data loss
- EF 6.0.0 and 6.0.1: sub-lists are no longer loaded
- DateTime with z suffix is not respected when reading entities
- 'The object has been removed from the model.' when building model
- EF Core 6.0 regression when using HasDefaultSchema() with ToTable(null)
- Variable names must be unique within a query batch or stored procedure
- Stack overflow when using circular composite key dependencies
- SqliteConnectionFactory.cs is not thread-safe
- EF Core 6.0 InvalidOperationException: The object has been removed from the model
- Subquery.Contains throws when the type of item is value type
- Query with n:m relation adds non-existent column
- InvalidOperationException "sequence contains no matching element" in TableReferenceExpression.get_Table
- Update from 5.0.1 to 6.0breaks all SqliteConnection
- Scaffolder throws error if junction table foreign key columns have identical names
- EFCore 6 - NullReferenceException upon EnsureDeleted
- Non-nullable value comparer can't be applied on nullable type
- Exception in SQL server query in EF Core 6, looks related to HasQueryFilter(), worked in EF Core 5
- RC2 Sqlite provider no longer clears temporary files on exit
- The dotnet ef dbcontext scaffold command does not print all expected logs
EF Core 3.1.27
EF Core 3.1.27 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.26.
Pull requests merged since the last update
Community contributions
- @RehmatFalcon: Update broken link to xunit.net
- @d79ima: Fix for issue #25116 - Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite error during migration
- @semuserable: typo
- @TortillaZHawaii: Fix missing word in Testing with db
Many thanks to all our contributors!
EF Core
- Query
- Dependencies
- DbContext
- Model building
- Change tracking
- Tests
- Migrations
- Miscellaneous
- Scaffolding
- Documentation
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 previews.
- Preview: EF Core 7.0.0 preview 6
- LTS: EF Core 6.0.7
- Supported: EF Core 3.1.27
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
August 4, 2022
Expand to see status from this week...
Highlights
Introducing the new .NET Data Hub!
The Data Hub is a new landing page bringing together everything related to data handling in .NET. Feedback on organization or anything missing is appreciated.
Meanwhile, the team is working hard to land .NET 7 and EF7 features, including Distributed transactions, JSON columns, Bulk updates, stored procedure mapping, Database scaffolding templates, and Entity splitting.
Community Standup: DbDataSource--a new System.Data abstraction
In this episode of the .NET data community standup, Shay Rojansky explores DbDataSource
, a new abstraction being introduced to System.Data in .NET 7.0. DbDataSource
unlocks easier integration of ADO.NET drivers with dependency injection, better management of advanced driver configuration, helps performance and more.
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 6
EF Core 7.0 (EF7) preview 6 is available from NuGet
Preview 6 contains the following new features:
- 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
Preview 6 also includes the following new features from previews 1 through 5:
- 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, and , preview 6.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.7
-
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
-
Don't add grouping key to projection when Distinct is applied
In addition, the following issues were fixed in the 6.0.1, 6.0.2, 6.0.3, 6.0.4, 6.0.5, and 6.0.6 releases:
- Can't create a view with navigation property
- Tools: Add dotnet-ef shims arm64
- Diagnostics: DataReaderDisposingEventData.ReadCount accumulates the value from different readers
- Consider setting NullabilityInfoContextSupport=true in EF's NuGet package
- SQLite doesn't work when trimming
- dotnet-ef needs to target 6
- Query exception after upgrading from 6.0.1 to 6.0.2
- Exception from SQLite provider when application is shutting down
- Collection_navigation_equal_to_null_for_subquery fails after merging from release/6.0
- EF Core 6.0 temporal tables - migration rollback doesn't work
- InvalidOperationException on save after upgrading from 5 to 6
- FirstOrDefault after custom projection == null cannot be translated
- DbContext scaffolding creates reference error CS0120 in nameof() for InverseProperty in certain conditions
- EF core 6 selecting null values despite where clause asking for not null
- Query: Rownumber conversion needs better logic to figure out partitions
- Suboptimal SQL generation for query with optional navigation, its collection navigation and lateral join
- Aggregates on multiple child tables produces invalid SQL
- ServiceProviderCache keeps initially created IServiceProvider indefinitely
- Setting a Nullable Foreign Key property to Null triggers cascade delete
- Optimize hangs and stops responding
- Exception when creating new migration after updating from 6.0-rc.1 to 6.0-rc.2 or 6.0-rtm
- efcore6 produces wrong SELECT SQL when Where/OrderBy clauses are applied to Owned properties followed by .Take
- Proxies using Records with a base class broken since .NET 6
- Parentheses put around IS NULL only if operand is of type boolean
- Self-referencing entity circular dependency happening just on EF Core 6.0
- Many To Many Exception when adding and removing same entity
- RelationalConnection.Close calls async function
- Circular dependency while creating tables with DatabaseFacade.EnsureCreated on EF Core 6
- EF Core Migration Bundles: no way to passthrough custom args to generated efbundle
- Did the naming convention change for HasCheckConstraint in v.6? Is this a breaking change?
- Generated JOIN for multiple MIN is wrong
- StackOverflowException in nested GroupBy query
- When trimming, queries fail because of missing System.Math
- GroupBy with outer reference not translating properly, causing data loss
- EF 6.0.0 and 6.0.1: sub-lists are no longer loaded
- DateTime with z suffix is not respected when reading entities
- 'The object has been removed from the model.' when building model
- EF Core 6.0 regression when using HasDefaultSchema() with ToTable(null)
- Variable names must be unique within a query batch or stored procedure
- Stack overflow when using circular composite key dependencies
- SqliteConnectionFactory.cs is not thread-safe
- EF Core 6.0 InvalidOperationException: The object has been removed from the model
- Subquery.Contains throws when the type of item is value type
- Query with n:m relation adds non-existent column
- InvalidOperationException "sequence contains no matching element" in TableReferenceExpression.get_Table
- Update from 5.0.1 to 6.0breaks all SqliteConnection
- Scaffolder throws error if junction table foreign key columns have identical names
- EFCore 6 - NullReferenceException upon EnsureDeleted
- Non-nullable value comparer can't be applied on nullable type
- Exception in SQL server query in EF Core 6, looks related to HasQueryFilter(), worked in EF Core 5
- RC2 Sqlite provider no longer clears temporary files on exit
- The dotnet ef dbcontext scaffold command does not print all expected logs
EF Core 3.1.27
EF Core 3.1.27 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.26.
Pull requests merged since the last update
Community contributions
- @GitHubPang: Fix grammar typo in XML doc
- @MoienTajik: remove extra duplicate migration existence check
- @virzak: Add Zomp EF Core Extensions
- @ErikEJ Removing obsolete extensions
Many thanks to all our contributors!
EF Core
- Documentation
- SaveChanges
- Model building
- Query
- DbContext
- Change tracking
- Tests
- Miscellaneous
- Interception
- Dependencies
- Scaffolding
- Tools
- Bulk operations
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 previews.
- Preview: EF Core 7.0.0 preview 6
- LTS: EF Core 6.0.7
- Supported: EF Core 3.1.27
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
August 18, 2022
Expand to see status from this week...
Highlights
Mega two weeks by the team! 55 PRs merged as we close down EF7 features. Newly available in the daily builds:
- JSON columns
- Bulk updates
- Stored procedures for insert/update/delete
- T4 templates for scaffolding from a database
- Allow applications to create model building conventions
And don't forget about:
- Distributed transactions
- Events and interception
- Table-per-concrete-type (TPC) mapping
- Value generation when using value converters
- Unidirectional many-to-many relationships
Also, EF7 Preview 7 is on NuGet, but use the daily builds instead since they are much closer to what we will actually ship.
Community Standup: CoreWCF--Roadmap and Q&A
CoreWCF is a port of the server side of Windows Communication Foundation (WCF) to .NET Core. The goal of this project is to enable existing WCF services to move to .NET Core. In this episode, join the CoreWCF team for Q&A, thoughts about when and where to use CoreWCF, and discussion about their roadmap for the future.
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 7
EF Core 7.0 (EF7) preview 7 is available from NuGet
Preview 7 contains the following new features:
- 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
Preview 7 also includes the following new features from previews 1 through 6:
- 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, and preview 7.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.8
-
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
-
Regression in 6.0.2: The variable name '@p0' has already been declared.
EF Core 3.1.28
EF Core 3.1.28 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.27.
Pull requests merged since the last update
Community contributions
- @rmt2021: Cosmos: retry on error codes 408 and 410
- @yinzara: Add support for CSharpHelper for Dictionary literals
- @AinoraZ: Add Ainoraz.EFCore.IncludeBuilder Extension
- @msawczyn: Update index.md
- @Peter-B- Add note that pre-convention configuration takes precedence over data annotation
Many thanks to all our contributors!
EF Core
- Model building
- Add metadata for optimistic concurrency support in sprocs
- Metadata work for json
- Add sugar methods to ConventionSet
- Add pre-convention configuration for conventions
- Add test for runtime model generation with proxies
- Move table configuration methods to (OwnedNavigation)TableBuilder
- Add IConventionEntityTypeBuilder.GetTargetEntityTypeBuilder
- EF Core 6.0 temporal tables - Support specifying precision for PeriodEnd and PeriodStart columns
- Addressing API review feedback regarding json columns
- More triggers to Core
- Add more model validation tests
- Validate that an entity type with sproc mapping is mapped to a table
- Uniquify FK and Key constraint names across tables
- Add a custom convention which adds a blank trigger to all tables
- Validate that no properties on an entity type are mapped to the same column
- Query
- Introduce QuerySqlGenerator.GenerateRootCommand as interception point to capture top-level query expression
- Query: Use object.Equals rather than Expression.Equal when constructing comparison in query
- Average_Grouped_from_LINQ_101 is non-deterministic
- Add immutable annotation support to TableExpressionBase
- Don't implement ITableBasedExpression in FromSqlExpression
- API review changes
- Add python script to replace query baselines
- Json Columns query work
- SaveChanges
- ExecuteUpdate/ExecuteDelete
- Split databases for filter/non-filter cases for bulk updates
- Add custom CommandSource and exception messages
- Implement ExecuteUpdate
- Exception message review by Shay
- Allow using other tables in the query to generate result set
- Convert to join for query with unsupported operations
- Generate correct Contains method when query has unsupported operators
- Cosmos
- Scaffolding
- Documentation
- Raw SQL
- Dependencies
- DbContext
- Tests
- Migrations
- SQLite
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 previews.
- Preview: EF Core 7.0.0 preview 7
- LTS: EF Core 6.0.8
- Supported: EF Core 3.1.28
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
September 1, 2022
Expand to see status from this week...
Highlights
Another two weeks with more than 50 PRs merged as we close down EF7. Be sure to check out our in-depth What's New documentation complete with runnable samples:
- JSON Columns
- ExecuteUpdate and ExecuteDelete (Bulk updates)
- Table-per-concrete-type (TPC) inheritance mapping
- Custom Reverse Engineering Templates
- Model building conventions
Use the daily builds to try EF7 for yourselves and file issues on GitHub with your feedback!
Community Standup: New aggregate function support in EF7
Aggregate functions such as COUNT
, MAX
or AVG
compute a single value from multiple rows. EF7 adds support for custom provider aggregate functions, with many new translations implemented. In this episode of the .NET Data Community Standup, Shay and the team explore these new translations across different EF providers, and see what they could mean for more efficient data loading.
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) preview 7
EF Core 7.0 (EF7) preview 7 is available from NuGet
Preview 7 contains the following new features:
- 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
Preview 7 also includes the following new features from previews 1 through 6:
- 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, and preview 7.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.8
-
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
-
Regression in 6.0.2: The variable name '@p0' has already been declared.
EF Core 3.1.28
EF Core 3.1.28 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.27.
Pull requests merged since the last update
Community contributions
Many thanks to all our contributors!
EF Core
- Documentation
- Fix typo in aka.ms links
- Add daily build info for tools and templates
- Update TPC sample with Identity column code
- Update index.yml
- Remove warnings
- What's new in EF7: Custom RevEng Templates
- Initial JSON columns sample
- Add redirection for scaffolding.md
- Add EF7 function translations
- What's new: model building conventions for applications
- Updates to What's New for JSON columns and ExecuteUpdate/ExecuteDelete
- Query
- Addressing final API review feedback for json columns
- API review changes
- Fix for query fails with JSON columns and Include collection
- Fix issue with required navigation and query filters
- Avoid repeated visitation of subquery in sql translator
- Don't simplify Case block when ElseResult exists
- Use correct return type for DATE/TIMEFROMPARTS functions
- Fully-qualify ExpressionPrinter in DebuggerDisplay
- SaveChanges
- Fix base parameter index calculation for sprocs
- Use partial updates for JSON
- Suffix original value sproc parameters by default
- JSON: add support for partial update to update just a single scalar property, rather than entire entities
- Use unmapped FKs for topological order when propagating store-generated values
- Fall back to non-RETURNING updates with old Sqlite
- Make filtered unique index update dependencies soft so they can be broken if there's a cycle, since they might not be enforced in the database
- Stop setting JSON array entities' state to Modified in SaveChanges
- ExecuteUpdate/ExecuteDelete
- Scaffolding
- Dependencies
- Model building
- SQLite
- Tests
- Migrations
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 previews.
- Preview: EF Core 7.0.0 preview 7
- LTS: EF Core 6.0.8
- Supported: EF Core 3.1.28
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
September 15, 2022
Expand to see status from this week...
Highlights
EF Core 7.0 (EF7) RC1 is on Nuget now!
RC1 contains all the major feature work for EF7. However, we have merged over 70 bug fixes and minor enhancements since RC1 was branched. But not to fear! Using the daily builds of EF7 is easy, and they even work with .NET 6!
Community Standup
We skipped the community standup last week to focus on closing down EF7. We'll be back next week to talk about Azure Mobile Apps and offline sync.
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) RC1
EF Core 7.0 (EF7) RC1 is available from NuGet
RC1 is does not include more than 70 fixes that will be in RC2. Therefore, we recommend using the daily builds when testing your applications with EF7.
RC1 contains the following new features:
- 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
RC1 also includes the following new features from previews 1 through 7:
- 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, and RC1.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.9
-
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
-
Scaffolding with NRT generates non-nullable navigation property from principal to dependent
-
Migrations containing strings with many line-breaks will truncate strings silently
EF Core 3.1.29
EF Core 3.1.29 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.28.
Pull requests merged since the last update
Community contributions
Many thanks to all our contributors!
EF Core
- Model building
- Use correct value comparer for FKs in compiled model.
- Take the value converter into account when creating concurrency tokens for table sharing
- Don't match explicit implementations for InversePropertyAttribute
- Avoid cascade cycles on SQL Server for derived-type referencing many-to-many
- Don't skip creating cascade delete on SQL Server when types are base-linking across tables
- Revert breaking change to shadow foreign key targeting generic types.
- Test for entity type with navigation mapped to SqlQuery
- Make On*Removed conventions run even if the declaring type was removed previously
- Fix logic for resetting facets in HasValueGenerationStrategy
- Remove old principal key after a value converter is applied
- SaveChanges
- Sproc fixes
- Take min/max batch size into account again for seeding
- Delete correct shared-key entity with in-memory provider
- Fix bugs with rows affected and value propagation for sprocs
- Support sproc input/output parameters on non-concurrency-token properties
- Don't undelete dependents if principal key changes
- TPH sibling metadata bug
- Allow FK type in database to be different from PK type
- Convert to provider values when comparing shared columns
- Query
- Perform structural equality in ExpressionEqualityComparer
- Fix for including collection entity which contains JSON
- Change JSONQuery.Path to be list of PathSegment
- Testing for query strings and various type mapping fixes
- Add support for final GroupBy operator
- Convert unflattened GroupJoin to correlated subquery
- Support for GroupBy entity type
- Ignore case when comparing store types for set operation validation
- Dependencies
- Change Tracking
- DbContext
- Documentation
- ExecuteUpdate/ExecuteDelete
- Cosmos
- Miscellaneous
- SQLite
- Migrations
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 previews.
- Preview: EF Core 7.0.0 RC1
- Preview releases lag behind the daily build. We recommend using the daily builds whenever possible.
- LTS: EF Core 6.0.9
- Supported: EF Core 3.1.29
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
September 29, 2022
Expand to see status from this week...
Highlights
We need your feedback now!
EF7 is pretty much done, so help us find bugs while we have time to fix them for GA. Using the daily builds of EF7 is easy, and they even work with .NET 6! Update your app and test it today!
In other news, new trimming annotations in EF7 mean many more EF Core apps will work with aggressive trimming, and can result in >25% reduction in EF assembly size.
Detailed "What's New in EF7" docs with runnable samples now available for:
- JSON Columns
- ExecuteUpdate and ExecuteDelete (Bulk updates)
- Table-per-concrete-type (TPC) inheritance mapping
- Custom Reverse Engineering Templates
- Model building conventions
- Stored procedure mapping
- New and improved interceptors and events
- Query enhancements
Community Standup: Azure Mobile Apps and offline sync
Adrian Hall (@FizzyInTheHall) joins the .NET Data team to show us Azure Mobile Apps. Learn how Azure Mobile Apps provides the tools and libraries you need to easily synchronize data between an Entity Framework Core-backed Web API and your mobile or desktop app.
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) RC1
EF Core 7.0 (EF7) RC1 is available from NuGet
RC1 is does not include more than 80 fixes that will be in RC2. Therefore, we recommend using the daily builds when testing your applications with EF7.
RC1 contains the following new features:
- 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
RC1 also includes the following new features from previews 1 through 7:
- 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, and RC1.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.9
-
The latest patch release of EF Core 6.0 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
-
Scaffolding with NRT generates non-nullable navigation property from principal to dependent
-
Migrations containing strings with many line-breaks will truncate strings silently
EF Core 3.1.29
EF Core 3.1.29 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.28.
Pull requests merged since the last update
Community contributions
Many thanks to all our contributors!
EF Core
- Documentation
- Update Readme
- Sample for stored procedure mapping
- Set working What's New samples to execute by default, rather than in-progress sproc mapping samples
- Fix sproc sample around concurrency token management
- What's new for stored procedure mapping
- Document the new support for SQL Server UTF-8 columns
- Pack of doc changes for SQL queries
- EF7 Breaking changes
- EF Core 5.0/6.0 breaking change updates
- Fixup to SQL query doc changes
- What's New: Interception
- Fix some sample issues
- What's new: queries
- Query
- Change Tracking
- Model building
- Scaffolding
- Trimming
- SaveChanges
- Dependencies
- ExecuteUpdate/ExecuteDelete
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 previews.
- Preview: EF Core 7.0.0 RC1
- Preview releases lag behind the daily build. We recommend using the daily builds whenever possible.
- LTS: EF Core 6.0.9
- Supported: EF Core 3.1.29
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
October 13, 2022
Expand to see status from this week...
Highlights
EF Core exceeds 500,000,000 downloads from NuGet!
- That's over 200,000 downloads of the packages every day!
- Congratulations to the team and community for all your hard work!

EF Core 7.0 (EF7) RC2 is on NuGet now
- RC2 is a feature-complete release candidate. If you haven't used the daily builds (why?), then download RC2 and try EF7 now. It even has a go-live license!
- Full "What's New" documentation with runnable samples is now available: aka.ms/efcore-whats-new
- Including:
- JSON Columns
- ExecuteUpdate and ExecuteDelete (Bulk updates)
- Faster SaveChanges
- Table-per-concrete-type (TPC) inheritance mapping
- Custom Reverse Engineering Templates
- Model building conventions
- Stored procedure mapping
- New and improved interceptors and events
- Query enhancements
- DbContext API and behavior enhancements
- Model building enhancements
- Improved value generation
- Migrations tooling improvements
- Performance enhancements for proxies
- First-class Windows Forms data binding
.NET 8 Data and EF8
We've started the process of planning for EF8 and other .NET Data work for .NET 8. See Release Planning for an overview of the planning process.
Community Standup: JSON Columns
This episode of the .NET Data Community Standup covers JSON column mapping in EF Core 7.0 (EF7). JSON columns allow relational databases to directly store documents while retaining the overall relational structure of the data. EF7 contains provider-agnostic support for JSON columns, with an implementation for SQL Server. The JSON in these columns can queried using LINQ, allowing filtering and sorting by the elements of the documents, as well as projection of elements out of the documents into results. In addition, EF7 supports element-level change tracking of the documents and partial updates for only the changed elements when SaveChanges is called.
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) RC2
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.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.10
EF Core 6.0.10 is available on NuGet now. This is a patch release of EF Core 6.0 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.9.
EF Core 3.1.30
EF Core 3.1.30 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.29.
Pull requests merged since the last update
Community contributions
Many thanks to all our contributors!
EF Core
- Query
- Fix result mapping string size in SQL Server string aggregate translator
- Add parentheses around SQL IS NULL
- Don't fail translation of aggregate when owned navigations
- (6.0.11) Clear reference to DbDataReader from RelationalDataReader
- Allow final GroupBy navigation
- Add test changes to AddMonths test for Sqlite
- Sqlite: AddTicks translation gives incorrect results
- Specify facets and store types in Northwind model
- GroupBy on Json column property + First/FirstOrDefault generates incorrect SQL
- Documentation
- Model building
- Dependencies
- SaveChanges
Microsoft.Data.Sqlite
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 previews.
- Preview: EF Core 7.0.0 RC2
- Preview releases lag behind the daily build. We recommend using the daily builds whenever possible.
- LTS: EF Core 6.0.10
- Supported: EF Core 3.1.30
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
October 27, 2022
Expand to see status from this week...
Highlights
.NET 8 and EF8
The team is hard at work planning for EF Core 8.0 (EF8) and other data work in .NET 8. As always, we will share the plan publicly as soon as we can.
See Release Planning for an overview of the planning process.
Analysis of EF Core bugs
Meanwhile, we have been looking back historical data on fixing bugs in the EF Core repo. A couple of charts are included below for anyone interested.
Note: This data is specifically about bugs, and does not include enhancements or feature requests.
Open and fixed bugs
We strive to fix the vast majority of bugs. That is, if we recognize something as a reproducible bug, then we very rarely close it as "won't fix". The chart below shows the number of bugs filed over time, with those remaining open in blue, and those fixed in orange.
Time to fix bugs
The second chart shows the amount of time it takes to fix a bug. That is, the time from when it is opened on GitHub, to the time when the fix is merged into the main branch.

EF Core 7.0 (EF7) RC2 is on NuGet now
- RC2 is a feature-complete release candidate. If you haven't used the daily builds (why?), then download RC2 and try EF7 now. It even has a go-live license!
- Full "What's New" documentation with runnable samples is now available: aka.ms/efcore-whats-new
- Including:
- JSON Columns
- ExecuteUpdate and ExecuteDelete (Bulk updates)
- Faster SaveChanges
- Table-per-concrete-type (TPC) inheritance mapping
- Custom Reverse Engineering Templates
- Model building conventions
- Stored procedure mapping
- New and improved interceptors and events
- Query enhancements
- DbContext API and behavior enhancements
- Model building enhancements
- Improved value generation
- Migrations tooling improvements
- Performance enhancements for proxies
- First-class Windows Forms data binding
Community Standup: ExecuteUpdate and ExecuteDelete (aka Bulk Updates)
EF Core 7.0 introduces the ExecuteUpdate and ExecuteDelete APIs, which allow you to easily use LINQ to express a database update or delete operation. These APIs can be far more efficient for applying changes to multiple rows based on a condition, e.g. “delete rows which have InActive set to true” (AKA bulk update scenarios). But in some scenarios, they also allow you to express changes over a single row in a much more succinct and simple way, simplifying your code. ExecuteUpdate and ExecuteDelete completely bypass EF’s change tracking and execute immediately, as opposed to when SaveChanges is called. Watch the latest episode of the .NET Data Community Standup to learn more and to explore the new possibilities that these new APIs bring!
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0
EF Core 7.0 (EF7) will be the next release after EF Core 6.0. It will be released alongside .NET 7 in November 2022.
The EF Core 7.0 Plan is available publicly in our documentation. As always, feedback is greatly appreciated. This plan is not set-in-stone; we expect it will evolve throughout the release cycle as we learn.
Each high-level area for EF Core 7.0 is linked in the table below together with its current high-level status.
EF Core 7.0 (EF7) RC2
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.
Burndown for EF Core 7.0
This is the burndown chart the team uses internally to track progress towards EF Core 7.0.

- The gray bar at the top represents all the issues already fixed for EF7.
- The "Closed" category includes only issues that have been fixed and then closed, not issues closed for any other reason.
- The "Fixed" category includes issues that have been fixed, but where the change has not yet been merged to the "main" branch.
- As always, we are aiming to be feature-complete by the beginning of September.
EF Core 6.0.10
EF Core 6.0.10 is available on NuGet now. This is a patch release of EF Core 6.0 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.9.
EF Core 3.1.30
EF Core 3.1.30 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.29.
Pull requests merged since the last update
Community contributions
- @thetechyghost: Update DailyBuilds.md
- @ekalb81: Update advanced-performance-topics.md
- @ekalb81: Update advanced-performance-topics.md
Many thanks to all our contributors!
EF Core
- Query
- Documentation
- SaveChanges
- Migrations
Builds to use
- The daily builds are the most up-to-date available.
- The daily builds now contain all issues merged for 6.0.x patch releases, as well as new code to be released in EF7 previews.
- Preview: EF Core 7.0.0 RC2
- Preview releases lag behind the daily build. We recommend using the daily builds whenever possible.
- LTS: EF Core 6.0.10
- Supported: EF Core 3.1.30
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
November 10, 2022
Expand to see status from this week...
Highlights
.NET Conf 2022 sessions
Leveling up data: Upgrade from EF6 to EF7 and blast off!
Arthur Vickers, Shay Rojansky
In this code-heavy session, Arthur and Shay from the .NET Data team take an Entity Framework 6 application running on .NET Framework 4.8 and upgrade it to Entity Framework Core 7 running on .NET 7. After the upgrade, queries run faster and the roundtrips needed to save data are massively reduced. We’ll then use several new features from EF7, including bulk updates to further boost performance, and querying into JSON embedded in a column. Join us to take your EF apps out of this world!

T4 goodness with Entity Framework Core 7
Erik Ejlskov Jensen
In EF Core 7 you can now use T4 (text template transformation templates) to customize the Database First workflow. In this session you will get an overview of this new feature and see some simple customizations.
EF Core 7 (EF7) is released!
- Announcement and overview on The .NET Blog
- Get it from NuGet
- Full "What's New" documentation with runnable samples: aka.ms/efcore-whats-new
- Including:
- JSON Columns
- ExecuteUpdate and ExecuteDelete (Bulk updates)
- Faster SaveChanges
- Table-per-concrete-type (TPC) inheritance mapping
- Custom Reverse Engineering Templates
- Model building conventions
- Stored procedure mapping
- New and improved interceptors and events
- Query enhancements
- DbContext API and behavior enhancements
- Model building enhancements
- Improved value generation
- Migrations tooling improvements
- Performance enhancements for proxies
- First-class Windows Forms data binding
.NET 8 and EF8
The team is hard at work planning for EF Core 8.0 (EF8) and other data work in .NET 8. As always, we will share the plan publicly as soon as we can.
See Release Planning for an overview of the planning process.
Community Standup: EF7 Custom Model Conventions
EF Core uses a metadata "model" to describe how the application's entity types are mapped to the underlying database. This model is built using a set of around 60 "conventions". The model built by conventions can then be customized using mapping attributes (aka "data annotations") and/or calls to the DbModelBuilder API in OnModelCreating. EF7 allows applications to remove or modify existing conventions, as well as create new conventions. On this .NET Data Community Standup, we learn how to take advantage of custom model building conventions in your EF Core 7.0 applications.
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0 (EF7)
EF Core 7.0 (EF7) is available from NuGet
EF7 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
- 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 EF7.
EF Core 6.0.11
EF Core 6.0.11 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
- Excessive memory usage after enabling DbContextFactory
- Avoid re-sending PRAGMA KEY on pooled SQLite connections
EF Core 3.1.31
EF Core 3.1.31 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.30.
Pull requests merged since the last update
Community contributions
- @bikbov: ToString() on string columns added
- @kuznetsovvj: Add a generic overload of ConventionSetBuilder.Remove
- @ErikEJ: Update issue templates
- @martingbrown: Fixed small mistake
- @davidhenley: Fixed "OnModelCrating" typo
Many thanks to all our contributors!
EF Core
- Documentation
- Dependencies
- Query
Builds to use
- The daily builds are the most up-to-date available.
- LTS: EF Core 6.0.11
- Supported: EF Core 3.1.31
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.
November 24, 2022
Expand to see status from this week...
Highlights
.NET 7 and EF7
- More than 300,000 NuGet Downloads of EF Core 7 in the first two weeks since release!
- Check out the Community Standup for a "Whirlwind Tour" of all new EF7 features.
- Don't forget our .NET Conf sessions, now available on demand:
.NET 8 and EF8
The team is hard at work planning for EF Core 8.0 (EF8) and other data work in .NET 8. As always, we will share the plan publicly as soon as we can.
See Release Planning for an overview of the planning process.
Community Standup: A Whirlwind Tour of EF7
Join the .NET Data team as we take a whirlwind tour through new features of EF Core 7.0 (EF7). This includes JSON columns, bulk updates, TPC mapping, and more!
You can watch all .NET Data Community Standups on YouTube. We live-stream every other Wednesday to Twitch, YouTube, and Twitter. Comment on GitHub with ideas for guests, demos, or anything else you want to see.
EF Core 7.0 (EF7)
EF Core 7.0 (EF7) is available from NuGet
EF7 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
- 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 EF7.
EF Core 6.0.11
EF Core 6.0.11 is available on NuGet now. This is a patch release of EF Core 6.0 containing only important bug fixes:
- Excessive memory usage after enabling DbContextFactory
- Avoid re-sending PRAGMA KEY on pooled SQLite connections
EF Core 3.1.31
EF Core 3.1.31 is available on NuGet now. This is a patch release of EF Core 3.1 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 3.1.30.
Pull requests merged since the last update
Community contributions
- @ErikEJ: Check for SQL Server VIEW DEFINITION rights fails, if databasename contains special chars
- @ErikEJ: Reverse engineering of Dynamics CRM TDS endpoint and Synapse Serverless SQL Pool
- @khellang: Updated EFCore.Sqlite.NodaTime to include 7.0.0 support
- @xXTraceXx" Update ManyToManyShared.cs
- @ErikEJ: Update some version numbers
- @lee-m: Fix minor grammatical error in index.md
- @jvandertil: Fix page content being part of tabbed content
- @R4ND3LL: Added extension reference for Entity Framework Ruler
Many thanks to all our contributors!
EF Core
- Documentation
- Update daily build docs for 8.0
- Add note on
PrimaryKey
having been introduced in EF 7 - Document 7.0 SaveChanges incompatibility with some computed columns
- Update value conversion docs for EF 7.0
- Update NRT docs for C# 11 required properties
- Update compat note for distributed transactions
- Add (and remove) some 7's (and one 6)
- Clarify the trigger convention's usage in the breaking change note
- Query
- Convert FromSql tests to use query infra
- Fix to #29572 - Json: predicate on json bool property generates incorrect sql
- Detect DbFunction returning a nullable value expression
- Fix to #17066 - Query: Translate ElementAt(OrDefault)
- Consider removing unnecessary CASTs around JSON_VALUE
- Use correct parameter in query based on type mapping
- SaveChanges
- Change tracking
- Bulk updates
- Dependencies
- Scaffolding
- Migrations
Builds to use
- The daily builds are the most up-to-date available.
- Current: EF Core 7.0.0
- LTS: EF Core 6.0.11
- Supported: EF Core 3.1.31
Releases
See GitHub Releases and EF Core releases and planning (Roadmap) in our documentation for full details.
Weekly/biweekly updates from previous years
Feedback
Comments are disabled on this issue to reduce noise. Please use the related discussion issue for any comments on these status updates.