dotnet / efcore

EF Core is a modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations.
https://docs.microsoft.com/ef/
MIT License
13.69k stars 3.17k forks source link

Latest news and progress on .NET 8 and EF8 #29989

Closed ajcvickers closed 7 months ago

ajcvickers commented 1 year ago

July 6, 2023

Highlights

Boolean columns with non-false default values are now handled correctly, including when scaffolded from an existing database. For example, consider this table:

CREATE TABLE [Members] (
    [Id] int NOT NULL IDENTITY,
    [Name] nvarchar(max) NULL,
    [IsActive] bit NOT NULL DEFAULT CAST(1 AS bit),
    CONSTRAINT [PK_Member] PRIMARY KEY ([Id]))

EF8 now parses literal values in column default constraints, allowing HasDefaultValue to be scaffolded instead of HasDefaultValyeSql. For example, CAST(1 AS bit) is parsed as true:

modelBuilder.Entity<Member>(entity =>
{
    entity.Property(e => e.IsActive).HasDefaultValue(true);
});

EF checks the value of a property to determine whether or not to let the database generate a value. Starting with EF8, this check can be customized. This means that EF8 will send false to the database when needed, since database default is known to be true.

In addition:

EF Core 8 (EF8)

EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023.

The EF Core 8 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 8 is linked in the table below together with its current high-level status.

EF Core 8 Theme Feature Status
Highly requested features JSON columns In-progress
Translate element access of a JSON array Complete
Support for JSON columns in SQLite Complete
Support JSON columns in compiled models Complete
Map collections of primitive types to JSON column in relational database Complete
Map collections of primitive types to JSON column in relational database Complete
Optimize update path for single property element Complete
Use -> and ->> in SQLite instead of json_extract Complete
Value objects In-progress
Raw SQL queries for unmapped types Complete
Support the new BCL DateOnly and TimeOnly structs for SQL Server Complete
Support SQL Server HierarchyID in EF Core Complete
Cloud native and devices AOT and trimming with EF Core In-progress
AOT and trimming for ADO.NET In-progress
NativeAOT/trimming compatibility for Microsoft.Data.Sqlite Complete
Performance Woodstar In-progress
Contains translated to parameterized IN queries Complete
Visual Tooling First-class T4 templates in Visual Studio Cut
EF Core Database First in Visual Studio In-progress
Developer experience Developer experience In-progress
Support querying over primitive collections Complete
Remove unneeded parentheses in SQL queries Complete
Translate ElementAt(OrDefault) Complete
Opt-out of lazy-loading for specific navigations Complete
Lazy-loading for no-tracking queries Complete
Reverse engineer Synapse and Dynamics 365 TDS Complete
Set MaxLength on TPH discriminator property by convention Complete
Translate ToString() on a string column Complete
Generic overload of ConventionSetBuilder.Remove Complete
Lookup tracked entities by primary key, alternate key, or foreign key Complete
Allow UseSequence and HiLo on non-key properties Complete
Pass query tracking behavior to materialization interceptor Complete
Use case-insensitive string key comparisons on SQL Server Complete
Allow value converters to change the DbType Complete
Resolve application services in EF services Complete
Numeric rowersion properties automatically convert to binary Complete
Allow transfer of ownership of DbConnection from application to DbContext Complete
Provide more information when 'No DbContext was found' error is generated Complete

Burndown for EF8

This is the burndown chart the team uses internally to track progress on EF Core 8.

EF8 Burndown

EF Core 8 Preview 5

EF Core 8 (EF8) Preview 5 is available from NuGet

Preview 5 contains the following new features:

In addition, Preview 2 contains the following features from Previews 1, 2, 3, and 4:

See GitHub for all issues resolved in Preview 1, Preview 2, Preview 3, Preview 4, and Preview 5.

EF Core 7.0.8

EF Core 7.0.8 is available on NuGet now.

This is a patch release of EF Core 7.0 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 7.0.7.

EF Core 7.0.7 was also release since the last new update. It contains the following important bug fixes:

EF Core 6.0.19

EF Core 6.0.19 is available on NuGet now. This is a patch release of EF Core 6 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.16.

Pull requests merged since the last update

Community contributions

Many thanks to all our contributors!

EF Core

Builds to use

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.

ajcvickers commented 1 year ago

January 5, 2023

Expand to see status from this week...

## Highlights ### .NET 8 and EF8 Work for .NET 8 and EF8 is well underway, with **more than 70 GitHub issues already fixed**. This includes 29 enhancements such as: - [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) - [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) - [Reverse engineering for Synapse Serverless SQL Pool and Dynamics 365 TDS Endpoint](https://github.com/dotnet/efcore/issues/29121) - [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) - [MaxLength set by convention for TPH discriminator columns](https://github.com/dotnet/efcore/issues/10691) Don't wait for preview 1; get all these changes now using the [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md)! The daily builds work on both .NET 6 and .NET 7. ### EF7 patch releases A 7.0.3 release of EF7 is planned for February containing [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.3+). Remember that all these fixes are already available for .NET 6 and .NET 7 in the [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md). ### EF Core 3.1 is now out-of-support Just a reminder that .NET Core 3.1 and EF Core 3.1 went [out-of-support on December 13, 2022](https://learn.microsoft.com/en-us/ef/core/what-is-new/). EF Core 5.0 is also out-of-support, so please update to EF Core 7.0 or EF Core 6.0 for long-term-support. ## Community Standup: The plan for EF8 The plan has been published for EF Core 8 and other data access work in .NET 8. This includes work in five major themes: - Highly requested features - Cloud native and devices - Performance - Visual tooling - Developer experience [Join the .NET Data Team for a discussion of what’s in and what’s out](https://youtu.be/-zoXAeDfNBY). You can [watch all .NET Data Community Standups on YouTube](https://aka.ms/efstandups). We live-stream every other Wednesday to Twitch, YouTube, and Twitter. [Comment on GitHub](https://github.com/dotnet/efcore/issues/22700) with ideas for guests, demos, or anything else you want to see. ## EF Core 8 (EF8) EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023. The [EF Core 8 Plan](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan) is available publicly in our documentation. As always, [feedback is greatly appreciated](https://github.com/dotnet/efcore/issues/29853). 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 8 is linked in the table below together with its current high-level status. | EF Core 8 Theme | Feature | Status | |:--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| | Highly requested features | [JSON columns](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#json-columns) | In-progress | | | • [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) | Complete | | | [Value objects](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#value-objects) | Planned | | | [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) | In-progress | | Cloud native and devices | [AOT and trimming with EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-with-ef-core) | In-progress | | | [AOT and trimming for ADO.NET](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-for-adonet) | In-progress | | Performance | [Woodstar](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#woodstar) | Planned | | Visual Tooling | [First-class T4 templates in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#first-class-t4-templates-in-visual-studio) | Planned | | | [EF Core Database First in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#ef-core-database-first-in-visual-studio) | Planned | | Developer experience | [Developer experience](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#theme-developer-experience) | In-progress | | | • [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) | Complete | | | • [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) | Complete | | | • [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) | Complete | | | • [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) | Complete | | | • [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) | Complete | | | • [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) | Complete | | | • [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) | Complete | | | • [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) | Complete | | | • [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) | Complete | | | • [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) | Complete | | | • [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) | Complete | | | • [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) | Complete | | | • [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) | Complete | | | • [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) | Complete | ## Burndown for EF8 This is the burndown chart the team uses internally to track progress on EF Core 8. EF8 Burndown - The upper chart shows work committed for EF8 - The lower chart shows work completed for EF8 - On each chart: - Enhancements are in green and are shown at the bottom - Bugs are in red and are stacked in the middle - Other issues are in blue and stacked at the top ## EF Core 7.0.1 (EF7) EF Core 7.0.1 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.1). This is a patch release of EF Core 7 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 7.0.0. ## EF Core 6.0.12 EF Core 6.0.12 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.12). This is a patch release of EF Core 6 containing only [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A6.0.12+is%3Aclosed): - [string.IndexOf throws NullReferenceException when applied on the result of a DbFunction ](https://github.com/dotnet/efcore/issues/29204) - [Function StoreType is ignored for DateTime](https://github.com/dotnet/efcore/issues/27954) - [RelationalMethodCallTranslatorProvider and explicit typeMapping](https://github.com/dotnet/efcore/issues/27524) ## Pull requests merged since the last update ### Community contributions - @R4ND3LL: [Added extension reference for Entity Framework Ruler](https://github.com/dotnet/EntityFramework.Docs/pull/4152) - @Zailef: [Fix minor typo 'initializs' => 'initializes'](https://github.com/dotnet/EntityFramework.Docs/pull/4164) - @yangzhongke: [Add the introduction to LessCode.EFCore.StronglyTypedId](https://github.com/dotnet/EntityFramework.Docs/pull/4166) - @GhalamborM: [Update index.md](https://github.com/dotnet/EntityFramework.Docs/pull/4176) - @ErikEJ: [Add new extension](https://github.com/dotnet/EntityFramework.Docs/pull/4177) Many thanks to all our contributors! ### EF Core - Documentation - [Clean up and document local DetectChanges behavior, plus other API doc](https://github.com/dotnet/efcore/pull/29792) - [Fix HTTP links in messages to use HTTPS](https://github.com/dotnet/efcore/pull/29896) - [Document conventions and related model building concepts](https://github.com/dotnet/EntityFramework.Docs/pull/4128) - [Add (and remove) some 7's (and one 6)](https://github.com/dotnet/EntityFramework.Docs/pull/4140) - [Clarify the trigger convention's usage in the breaking change note](https://github.com/dotnet/EntityFramework.Docs/pull/4156) - [Add note on SqlClient async issues in perf docs](https://github.com/dotnet/EntityFramework.Docs/pull/4161) - [Bump Newtonsoft.Json from 13.0.1 to 13.0.2 in /samples/core/ChangeTracking/IdentityResolutionInEFCore](https://github.com/dotnet/EntityFramework.Docs/pull/4180) - [The plan for EF8](https://github.com/dotnet/EntityFramework.Docs/pull/4182) - [Fix EF8 links](https://github.com/dotnet/EntityFramework.Docs/pull/4184) - [Link to API docs for EF 7](https://github.com/dotnet/EntityFramework.Docs/pull/4187) - [Correct xmldocs on dependency objects to mention the with operator](https://github.com/dotnet/efcore/pull/29936) - [Move EF Core 3.1 and 5.0 under out-of-support in TOC](https://github.com/dotnet/EntityFramework.Docs/pull/4193) - Query - [SQLite: Use infix GLOB and REGEXP operators](https://github.com/dotnet/efcore/pull/23193) - [Use correct parameter in query based on type mapping](https://github.com/dotnet/efcore/pull/29650) - [Json/Query: translate element access of a json array](https://github.com/dotnet/efcore/pull/29656) - [Throw if CompiledQuery is used with different models](https://github.com/dotnet/efcore/pull/29767) - [Add static Print methods to ExpressionPrinter](https://github.com/dotnet/efcore/pull/29854) - [Most of explicit and lazy loading for no-tracking queries](https://github.com/dotnet/efcore/pull/29865) - [Identity resolution for loading detached entities](https://github.com/dotnet/efcore/pull/29884) - [Minor test refactoring and enabling](https://github.com/dotnet/efcore/pull/29958) - [Flow query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/pull/29928) - [Json: improve projection deduplication for scenarios containing collection indexers](https://github.com/dotnet/efcore/pull/29808) - [SQLite: Simplify !Regex.IsMatch to NOT REGEXP](https://github.com/dotnet/efcore/pull/29781) - Proxies - [Allow ignoring non-virtual navigations with lazy-loading proxies](https://github.com/dotnet/efcore/pull/29944) - [Don't proxy navigations not configured for lazy loading](https://github.com/dotnet/efcore/pull/29957) - SaveChanges - (7.0.2) [Fix SQL Server result mapping for bulk insert](https://github.com/dotnet/efcore/pull/29590) - [Fix SQL Server bulk insert edge case](https://github.com/dotnet/efcore/pull/29669) - [Remove s from AppendInsertAndSelectOperations](https://github.com/dotnet/efcore/pull/29678) - [Fix bug where a non-sproc command comes before a sproc command](https://github.com/dotnet/efcore/pull/29680) - [Make unique index SaveChanges topological dependency optional for null values](https://github.com/dotnet/efcore/pull/29796) - [Update discriminator columns when PK-to-PK dependent type is changed](https://github.com/dotnet/efcore/pull/29876) - (7.0.3) [Avoid circular dependency for unique indexes with null values](https://github.com/dotnet/efcore/pull/29921) - (7.0.3) [Update discriminator columns when PK-to-PK dependent type is changed](https://github.com/dotnet/efcore/pull/29920) - (7.0.3) [Fix bug where a non-sproc command comes before a sproc command](https://github.com/dotnet/efcore/pull/29722) - (7.0.3) [Fix SQL Server bulk insert edge case](https://github.com/dotnet/efcore/pull/29717) - Model Building - [Allow shared columns with nullable value converters](https://github.com/dotnet/efcore/pull/29746) - [Avoid redundant looping in property metadata](https://github.com/dotnet/efcore/pull/29805) - [Allow underscores in identifiers again](https://github.com/dotnet/efcore/pull/29821) - [Don't try to discover FK properties when conflicting with 2 or more other FKs](https://github.com/dotnet/efcore/pull/29849) - [Allow SQLServer Sequence/HiLo on non-key properties](https://github.com/dotnet/efcore/pull/29864) - [Don't validate shared columns have the same provider type unless they are used in a key, foreign key or a unique index](https://github.com/dotnet/efcore/pull/29866) - [Set max length for string discriminator properties](https://github.com/dotnet/efcore/pull/29946) - [HasMaxLength(-1) sets unbounded max length](https://github.com/dotnet/efcore/pull/29959) - [Allow lazy-loading to be configured per navigation](https://github.com/dotnet/efcore/pull/29943) - [Warn when entity type, property, or navigation is ignored after being explicitly mapped](https://github.com/dotnet/efcore/pull/29926) - [Allow service properties typed as object](https://github.com/dotnet/efcore/pull/29919) - (7.0.3) [Revert shared columns validation breaking change](https://github.com/dotnet/efcore/pull/29867) - (7.0.3) [Avoid infinite loop during foreign key discovery](https://github.com/dotnet/efcore/pull/29850) - (7.0.3) [Allow underscores in identifiers again](https://github.com/dotnet/efcore/pull/29822) - (7.0.3) [Avoid redundant looping in property metadata](https://github.com/dotnet/efcore/pull/29807) - (7.0.3) [Allow shared columns with nullable value converters](https://github.com/dotnet/efcore/pull/29778) - Type mapping - [Ensure that facets specified in the store type name take precedence](https://github.com/dotnet/efcore/pull/29628) - [SQLite type mapping should not be returned without converter when CLR type does not match](https://github.com/dotnet/efcore/pull/29633) - [Handle row-version columns in owned types with conversions](https://github.com/dotnet/efcore/pull/29730) - [Fix in-memory issues with value comparers](https://github.com/dotnet/efcore/pull/29745) - [Fix relational mapping hints and add DbType](https://github.com/dotnet/efcore/pull/29967) - [Long and ULong properties marked as rowversion automatically convert to binary on SQL Server](https://github.com/dotnet/efcore/pull/29961) - [Use case-insensitive string comparisons by default on SQL Server](https://github.com/dotnet/efcore/pull/29955) - Change tracking - [Thanksgiving project: lookup entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/pull/29686) - [Null FK value when detaching Added principal by Remove](https://github.com/dotnet/efcore/pull/29803) - Dependencies - [Bump Newtonsoft.Json from 13.0.1 to 13.0.2 in /test/EFCore.Specification.Tests](https://github.com/dotnet/efcore/pull/29801) - [Bump Microsoft.AspNetCore.OData from 8.0.11 to 8.0.12](https://github.com/dotnet/efcore/pull/29834) - Miscellaneous - [Remove LegacyReferenceEqualityComparer](https://github.com/dotnet/efcore/pull/29798) - [Fix build issues in IDE](https://github.com/dotnet/efcore/pull/29800) - [Switch to interpreted delegates for one-off invocations](https://github.com/dotnet/efcore/pull/29815) - Scaffolding - [Remove common property prefix navigation naming](https://github.com/dotnet/efcore/pull/29771) - [SQLite: Reverse engineer collation](https://github.com/dotnet/efcore/pull/29857) - [Use raw string literals in scaffolding tests](https://github.com/dotnet/efcore/pull/29965) - (7.0.3) [Fix missing HasForeignKey when principal key is an alternate key](https://github.com/dotnet/efcore/pull/29731) - Migrations - [Implement EnsureDeleted for SQLite in-memory database](https://github.com/dotnet/efcore/pull/29794) - [Include table name for overrides in snapshot](https://github.com/dotnet/efcore/pull/29819) - (7.0.3) [Include table name for overrides in snapshot](https://github.com/dotnet/efcore/pull/29820) - (7.0.3) [Fix making column required on SQL Server with idempotent migrations](https://github.com/dotnet/efcore/pull/29784) - Bulk updates - [Support interfaces and entities with owned types in ExecuteUpdate setter property lambda](https://github.com/dotnet/efcore/pull/29672) - (7.0.3) [Support entities with owned types in ExecuteUpdate setter property lambda](https://github.com/dotnet/efcore/pull/29723) - DbContext API - [Reset query tracking behavior correctly if set on DbContextOptions](https://github.com/dotnet/efcore/pull/29766) - [Support resolving application services from singleton internal services](https://github.com/dotnet/efcore/pull/29950) - [Dispose service properties when context is disposed or returned to the pool](https://github.com/dotnet/efcore/pull/29929) - (7.0.3) [Reset query tracking behavior correctly if set on DbContextOptions](https://github.com/dotnet/efcore/pull/29797) ## Builds to use - The [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md) are the most up-to-date available. - The daily builds now contain all issues merged for 7.0.x patch releases, as well as new code to be released in EF8 previews. - The daily builds work on both .NET 6 and .NET 7. - Current: [EF Core 7.0.1](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.1) - LTS: [EF Core 6.0.12](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.12) ## Releases See [GitHub Releases](https://github.com/dotnet/efcore/releases) and [EF Core releases and planning (Roadmap)](https://docs.microsoft.com/ef/core/what-is-new/) in our documentation for full details. ## Weekly/biweekly updates from previous years * [2022](https://github.com/dotnet/efcore/issues/27185) * [2021](https://github.com/dotnet/efcore/issues/23884) * [2020](https://github.com/dotnet/efcore/issues/19549) * [2019](https://github.com/dotnet/efcore/issues/15403) ## Feedback Comments are disabled on this issue to reduce noise. Please use [the related discussion issue](https://github.com/dotnet/efcore/issues/15404) for any comments on these status updates.

ajcvickers commented 1 year ago

January 19, 2023

Expand to see status from this week...

## Highlights ### .NET 8 and EF8 The highly requested feature [_Raw SQL queries for unmapped types_](https://github.com/dotnet/efcore/issues/10753) is now included in the 30+ enhancements ready for EF8 preview 1. For example, for some arbitrary type not included in the EF model: ```C# public class PostSummary { public string BlogName { get; set; } public string PostTitle { get; set; } public DateTime PublishedOn { get; set; } } ``` A SQL query can be used to return instances of this type: ```C# var start = new DateTime(2022, 1, 1); var end = new DateTime(2023, 1, 1); var summaries = await context.Database.SqlQuery( @$"SELECT b.Name AS BlogName, p.Title AS PostTitle, p.PublishedOn FROM Posts AS p INNER JOIN Blogs AS b ON p.BlogId = b.Id WHERE p.PublishedOn >= {start} AND p.PublishedOn < {end}") .ToListAsync(); ``` The `start` and `end` dates will be appropriately parameterized, keeping the query safe and efficient. The `SqlQuery` method can also be used to query views, execute stored procedures, or call database functions. Don't wait for preview 1; try it now using the [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md)! The daily builds work on both .NET 6 and .NET 7. ### EF7 patch releases A 7.0.3 release of EF7 is planned for February containing [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.3+). Remember that all these fixes are already available for .NET 6 and .NET 7 in the [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md). ## Community Standup: Entity Framework Core FAQs In the [latest .NET Data Community Standup](https://youtu.be/2MZNbPT8Q2E), the Microsoft .NET Data Access team shared answers to many frequently asked questions about EF Core. For example: - What's the difference between EF Core and EF6? - What NuGet packages to I need to install to use EF Core? - Should I always use no-tracking queries? - Why does EF Core sometimes ignore Includes? - What's wrong with using owned types for value objects? - Should I create a repository over EF Core? - Why does the in-memory database not work in my tests? - How do I call stored procedures from EF Core? - How do I see the SQL for a LINQ query? You can [watch all .NET Data Community Standups on YouTube](https://aka.ms/efstandups). We live-stream every other Wednesday to Twitch, YouTube, and Twitter. [Comment on GitHub](https://github.com/dotnet/efcore/issues/22700) with ideas for guests, demos, or anything else you want to see. ## EF Core 8 (EF8) EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023. The [EF Core 8 Plan](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan) is available publicly in our documentation. As always, [feedback is greatly appreciated](https://github.com/dotnet/efcore/issues/29853). 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 8 is linked in the table below together with its current high-level status. | EF Core 8 Theme | Feature | Status | |:--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| | Highly requested features | [JSON columns](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#json-columns) | In-progress | | | • [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) | Complete | | | [Value objects](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#value-objects) | Planned | | | [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) | Complete | | Cloud native and devices | [AOT and trimming with EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-with-ef-core) | In-progress | | | [AOT and trimming for ADO.NET](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-for-adonet) | In-progress | | Performance | [Woodstar](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#woodstar) | Planned | | Visual Tooling | [First-class T4 templates in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#first-class-t4-templates-in-visual-studio) | Planned | | | [EF Core Database First in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#ef-core-database-first-in-visual-studio) | Planned | | Developer experience | [Developer experience](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#theme-developer-experience) | In-progress | | | • [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) | Complete | | | • [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) | Complete | | | • [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) | Complete | | | • [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) | Complete | | | • [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) | Complete | | | • [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) | Complete | | | • [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) | Complete | | | • [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) | Complete | | | • [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) | Complete | | | • [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) | Complete | | | • [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) | Complete | | | • [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) | Complete | | | • [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) | Complete | | | • [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) | Complete | | | • [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) | Complete | | | • [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) | Complete | ## Burndown for EF8 This is the burndown chart the team uses internally to track progress on EF Core 8. EF8 Burndown - The upper chart shows work committed for EF8 - The lower chart shows work completed for EF8 - On each chart: - Enhancements are in green and are shown at the bottom - Bugs are in red and are stacked in the middle - Other issues are in blue and stacked at the top ## EF Core 7.0.2 (EF7) EF Core 7.0.2 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.1). This is a patch release of EF Core 7 containing only [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.2+is%3Aclosed): - [Exception when inserting multiple rows into the same table on SQL Server](https://github.com/dotnet/efcore/issues/29502) ## EF Core 6.0.13 EF Core 6.0.13 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.13). This is a patch release of EF Core 6 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.12. ## Pull requests merged since the last update ### Community contributions - @nbarbettini: [Fix grammar in XML doc for ToQueryString](https://github.com/dotnet/efcore/pull/29979) - @DoctorKrolic: [Remove unnecessary dependency on MS.CA.VB package](https://github.com/dotnet/efcore/pull/29986) - @alhad-deshpande: [Updating SQLitePCLRaw library versions to 2.1.3 as it has ppc64le](https://github.com/dotnet/efcore/pull/29783) - @gurustron: [Fix typo in ApplyConfigurationsFromAssembly XML doc](https://github.com/dotnet/efcore/pull/30003) - @yanxiaodi: [Add the configuration for System.Text.Json to fix the cycle reference](https://github.com/dotnet/EntityFramework.Docs/pull/4190) - @JonathanMagnan: [Update index.md](https://github.com/dotnet/EntityFramework.Docs/pull/4196) - @YuraRov: [Rename identifier in ThenInclude method (Cartesian explosion section)](https://github.com/dotnet/EntityFramework.Docs/pull/4208) - @kaypee90: [Fixes identified grammatical errors and spelling mistakes in What's New in EF Core 7.0](https://github.com/dotnet/EntityFramework.Docs/pull/4211) - @ascott18: [Clarify that both filtered include examples are valid](https://github.com/dotnet/EntityFramework.Docs/pull/4216) Many thanks to all our contributors! ### EF Core - Documentation - [Some tweaks to the daily build docs](https://github.com/dotnet/efcore/pull/29983) - [Update github link to xref links](https://github.com/dotnet/EntityFramework.Docs/pull/4194) - [Some corrections and additions to value generation](https://github.com/dotnet/EntityFramework.Docs/pull/4172) - [Add link to news and progress](https://github.com/dotnet/EntityFramework.Docs/pull/4198) - [Improve description of single/split queries](https://github.com/dotnet/EntityFramework.Docs/pull/4201) - [Some minor fixups to #4201](https://github.com/dotnet/EntityFramework.Docs/pull/4203) - [EOL 3.1](https://github.com/dotnet/EntityFramework.Docs/pull/4171) - [Remove "minor releases" from the release planning page](https://github.com/dotnet/EntityFramework.Docs/pull/4206) - Query - [Correct ExpressionPrinter in `[DebuggerDisplay]`](https://github.com/dotnet/efcore/pull/30021) - [Fix split query over GroupBy over parameter](https://github.com/dotnet/efcore/pull/30024) - [Raw SQL queries for unmapped types](https://github.com/dotnet/efcore/pull/29931) - (7.0.3) [Fix split query over GroupBy over parameter](https://github.com/dotnet/efcore/pull/30030) - [Allow field navigations in proxies when lazy-loading is disabled for the navigation](https://github.com/dotnet/efcore/pull/30082) - Dependencies - [Bump Castle.Core from 5.1.0 to 5.1.1](https://github.com/dotnet/efcore/pull/29964) - [Bump SQLitePCLRaw.core from 2.1.2 to 2.1.3](https://github.com/dotnet/efcore/pull/29835) - [Bump SQLitePCLRaw.bundle_e_sqlcipher from 2.1.2 to 2.1.3](https://github.com/dotnet/efcore/pull/29836) - (2.1.39) [Update to SQLitePCLRaw 1.1.15](https://github.com/dotnet/efcore/pull/29433) - (7.0.3) [Update to SQLitePCLRaw 2.1.4](https://github.com/dotnet/efcore/pull/30036) - Scaffolding - (7.0.3) [Handle FK on keyless entity type](https://github.com/dotnet/efcore/pull/29779) - (7.0.3) [Fix code for EF6 many-to-many pattern](https://github.com/dotnet/efcore/pull/29793) - [Scaffold [ForeignKey] and [InverseProperty] when principal key is alternate key](https://github.com/dotnet/efcore/pull/29449) - [Clean up code generation tests](https://github.com/dotnet/efcore/pull/29995) - SaveChanges - [Correct `[Obsolete]` message for AutoTransactionBehavior](https://github.com/dotnet/efcore/pull/29991) - (7.0.3) [Correct `[Obsolete]` message for AutoTransactionBehavior](https://github.com/dotnet/efcore/pull/30040) - Model Building - [Take schema into account when comparing FK constraints](https://github.com/dotnet/efcore/pull/30047) - Change tracking - [Correct NRT annotations in SnapshotFactoryFactory](https://github.com/dotnet/efcore/pull/30014) - Miscellaneous - [Fix test string assertion](https://github.com/dotnet/efcore/pull/29982) - Migrations - (7.0.3) [Filter out indexer navigations when sorting columns](https://github.com/dotnet/efcore/pull/29981) - DbContext API - [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/pull/29960) ### Microsoft.Data.Sqlite - [Move taking of lock earlier to avoid race in PruneCallback](https://github.com/dotnet/efcore/pull/30080) ## Builds to use - The [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md) are the most up-to-date available. - The daily builds now contain all issues merged for 7.0.x patch releases, as well as new code to be released in EF8 previews. - The daily builds work on both .NET 6 and .NET 7. - Current: [EF Core 7.0.2](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.2) - LTS: [EF Core 6.0.13](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.13) ## Releases See [GitHub Releases](https://github.com/dotnet/efcore/releases) and [EF Core releases and planning (Roadmap)](https://docs.microsoft.com/ef/core/what-is-new/) in our documentation for full details. ## Weekly/biweekly updates from previous years * [2022](https://github.com/dotnet/efcore/issues/27185) * [2021](https://github.com/dotnet/efcore/issues/23884) * [2020](https://github.com/dotnet/efcore/issues/19549) * [2019](https://github.com/dotnet/efcore/issues/15403) ## Feedback Comments are disabled on this issue to reduce noise. Please use [the related discussion issue](https://github.com/dotnet/efcore/issues/15404) for any comments on these status updates.

ajcvickers commented 1 year ago

February 2, 2023

Expand to see status from this week...

## Highlights ### .NET 8 and EF8 New for EF8: `DateOnly` and `TimeOnly` mapping for SQL Server and Azure SQL! Thanks to a community contribution from @ErikEJ, [DateOnly](https://learn.microsoft.com/en-us/dotnet/api/system.dateonly) and [TimeOnly](https://learn.microsoft.com/en-us/dotnet/api/system.timeonly) are [now supported in Microsoft.Data.SqlClient](https://github.com/dotnet/SqlClient/pull/1813). We have built on this to add support ready for EF Core 8 Preview 1. `DateOnly` and `TimeOnly` are mapped to the T-SQL [date](https://learn.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql) and [time](https://learn.microsoft.com/en-us/sql/t-sql/data-types/time-transact-sql) types respectively. For example, the following entity type: ```csharp public class School { public int Id { get; set; } public string Name { get; set; } public DateOnly Founded { get; set; } public TimeOnly OpensAt { get; set; } public TimeOnly ClosedAt { get; set; } public List Terms { get; } = new(); } ``` Maps to this table: ```sql CREATE TABLE [Schools] ( [Id] int NOT NULL IDENTITY, [Name] nvarchar(max) NOT NULL, [Founded] date NOT NULL, [OpensAt] time NOT NULL, [ClosedAt] time NOT NULL, CONSTRAINT [PK_Schools] PRIMARY KEY ([Id]) ); ``` For Database First workflows, `date` and `time` columns will be reverse-engineered (scaffolded) to `DateOnly` and `TimeOnly` properties. Full [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete) operations are supported with `DateOnly` and `TimeOnly`. For example, the following LINQ query: ```csharp var now = DateOnly.FromDateTime(DateTime.UtcNow); var currentTerms = await context.Schools .Include(s => s.Terms.Where(t => t.FirstDay <= now && t.LastDay >= now)) .ToListAsync(); ``` Generates the following T-SQL query: ```sql SELECT [s].[Id], [s].[ClosedAt], [s].[Founded], [s].[Name], [s].[OpensAt], [t0].[Id], [t0].[FirstDay], [t0].[LastDay], [t0].[Name], [t0].[SchoolId] FROM [Schools] AS [s] LEFT JOIN ( SELECT [t].[Id], [t].[FirstDay], [t].[LastDay], [t].[Name], [t].[SchoolId] FROM [Term] AS [t] WHERE [t].[FirstDay] <= @__now_0 AND [t].[LastDay] >= @__now_0 ) AS [t0] ON [s].[Id] = [t0].[SchoolId] ORDER BY [s].[Id] ``` ### EF7 patch releases A 7.0.3 release of EF7 is planned for February containing [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.3+). Remember that all these fixes are already available for .NET 6 and .NET 7 in the [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md). ## Azure Cosmos DB Live TV: Streamline Your Data Access with Entity Framework Core [In this episode of Azure Cosmos DB Live TV](https://www.youtube.com/live/7dAZBqux3W0?feature=share), Mark Brown welcomes Jiachen Jiang and Arthur Vickers (PM and Engineering Lead for Entity Framework Core) to discuss the experience that EF Core brings to the table for developers working with Azure Cosmos DB and when devs should consider using EF Core for their project. ## Community Standup: Entity Framework Core FAQs In the [latest .NET Data Community Standup](https://youtu.be/2MZNbPT8Q2E), the Microsoft .NET Data Access team shared answers to many frequently asked questions about EF Core. For example: - What's the difference between EF Core and EF6? - What NuGet packages to I need to install to use EF Core? - Should I always use no-tracking queries? - Why does EF Core sometimes ignore Includes? - What's wrong with using owned types for value objects? - Should I create a repository over EF Core? - Why does the in-memory database not work in my tests? - How do I call stored procedures from EF Core? - How do I see the SQL for a LINQ query? You can [watch all .NET Data Community Standups on YouTube](https://aka.ms/efstandups). We live-stream every other Wednesday to Twitch, YouTube, and Twitter. [Comment on GitHub](https://github.com/dotnet/efcore/issues/22700) with ideas for guests, demos, or anything else you want to see. ## EF Core 8 (EF8) EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023. The [EF Core 8 Plan](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan) is available publicly in our documentation. As always, [feedback is greatly appreciated](https://github.com/dotnet/efcore/issues/29853). 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 8 is linked in the table below together with its current high-level status. | EF Core 8 Theme | Feature | Status | |:--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| | Highly requested features | [JSON columns](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#json-columns) | In-progress | | | • [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) | Complete | | | [Value objects](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#value-objects) | Planned | | | [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) | Complete | | | [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) | Complete | | Cloud native and devices | [AOT and trimming with EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-with-ef-core) | In-progress | | | [AOT and trimming for ADO.NET](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-for-adonet) | In-progress | | Performance | [Woodstar](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#woodstar) | Planned | | Visual Tooling | [First-class T4 templates in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#first-class-t4-templates-in-visual-studio) | Planned | | | [EF Core Database First in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#ef-core-database-first-in-visual-studio) | Planned | | Developer experience | [Developer experience](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#theme-developer-experience) | In-progress | | | • [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) | Complete | | | • [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) | Complete | | | • [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) | Complete | | | • [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) | Complete | | | • [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) | Complete | | | • [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) | Complete | | | • [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) | Complete | | | • [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) | Complete | | | • [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) | Complete | | | • [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) | Complete | | | • [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) | Complete | | | • [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) | Complete | | | • [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) | Complete | | | • [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) | Complete | | | • [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) | Complete | | | • [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) | Complete | ## Burndown for EF8 This is the burndown chart the team uses internally to track progress on EF Core 8. EF8 Burndown - The upper chart shows work committed for EF8 - The lower chart shows work completed for EF8 - On each chart: - Enhancements are in green and are shown at the bottom - Bugs are in red and are stacked in the middle - Other issues are in blue and stacked at the top ## EF Core 7.0.2 (EF7) EF Core 7.0.2 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.1). This is a patch release of EF Core 7 containing only [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.2+is%3Aclosed): - [Exception when inserting multiple rows into the same table on SQL Server](https://github.com/dotnet/efcore/issues/29502) ## EF Core 6.0.13 EF Core 6.0.13 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.13). This is a patch release of EF Core 6 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.12. ## Pull requests merged since the last update ### Community contributions - @lorcQc: [EFCore.VisualBasic now supports EF7](https://github.com/dotnet/EntityFramework.Docs/pull/4218) - @dualbios: [Update index.md](https://github.com/dotnet/EntityFramework.Docs/pull/4215) - @michaelrp: [Very minor grammar update](https://github.com/dotnet/EntityFramework.Docs/pull/4219) - @ricardodsanchez: [Update commit-failures.md](https://github.com/dotnet/EntityFramework.Docs/pull/4225) - @vorsprungdev: [Update choosing-a-testing-strategy.md](https://github.com/dotnet/EntityFramework.Docs/pull/4228) - @ar1k: [Remove duplicate word](https://github.com/dotnet/EntityFramework.Docs/pull/4229) Many thanks to all our contributors! ### EF Core - Documentation - [Document that HasMaxLength(-1) means no maximum length](https://github.com/dotnet/efcore/pull/30137) - [Update --table and --schema documentation](https://github.com/dotnet/EntityFramework.Docs/pull/4210) - [Rebranding of Azure Cosmos DB APIs](https://github.com/dotnet/EntityFramework.Docs/pull/4220) - [Breaking change note for DateOnly/TimeOnly scaffolding](https://github.com/dotnet/EntityFramework.Docs/pull/4237) - [What's new in EF Core 8 Preview 1](https://github.com/dotnet/EntityFramework.Docs/pull/4236) - [Clarify SaveChanges roundtrips in Efficient Updating section](https://github.com/dotnet/EntityFramework.Docs/pull/4232) - Query - [Fix to #30073 - JSON query regression in EF8](https://github.com/dotnet/efcore/pull/30086) - [Count after Take throws "No column name was specified for column 1 of 't'."](https://github.com/dotnet/efcore/pull/30134) - Migrations - [Remove regex from SqlServerMigrationsSqlGenerator](https://github.com/dotnet/efcore/pull/30069) - [Provide more information when exception thrown discovering/creating design-time DbContexts](https://github.com/dotnet/efcore/pull/30070) - Dependencies - [Bump Microsoft.Data.SqlClient from 5.0.1 to 5.1.0](https://github.com/dotnet/efcore/pull/30120) - Scaffolding - [Clarify how the --table and --schema parameters work when scaffolding](https://github.com/dotnet/efcore/pull/30071) - SaveChanges - [Allow opting out of RETURNING/OUTPUT clauses in SaveChanges](https://github.com/dotnet/efcore/pull/29917) - Model Building - [Support for DateOnly/TimeOnly for SQL Server](https://github.com/dotnet/efcore/pull/30109) ## Builds to use - The [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md) are the most up-to-date available. - The daily builds now contain all issues merged for 7.0.x patch releases, as well as new code to be released in EF8 previews. - The daily builds work on both .NET 6 and .NET 7. - Current: [EF Core 7.0.2](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.2) - LTS: [EF Core 6.0.13](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.13) ## Releases See [GitHub Releases](https://github.com/dotnet/efcore/releases) and [EF Core releases and planning (Roadmap)](https://docs.microsoft.com/ef/core/what-is-new/) in our documentation for full details. ## Weekly/biweekly updates from previous years * [2022](https://github.com/dotnet/efcore/issues/27185) * [2021](https://github.com/dotnet/efcore/issues/23884) * [2020](https://github.com/dotnet/efcore/issues/19549) * [2019](https://github.com/dotnet/efcore/issues/15403) ## Feedback Comments are disabled on this issue to reduce noise. Please use [the related discussion issue](https://github.com/dotnet/efcore/issues/15404) for any comments on these status updates.

ajcvickers commented 1 year ago

February 16, 2023

Expand to see status from this week...

## Highlights ### EF Core 7.0.3 EF Core 7.0.3 is [on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.3). This patch release contains [many important bug fixes for EF7](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.3+is%3Aclosed). If you're using EF7, then update now! If you're not using EF7, then what are you waiting for? It runs on .NET 6 or 7. ### GitHub repo survey [We want your feedback](https://github.com/dotnet/efcore/issues/30242) on what we are doing well and what we could do better in our GitHub repo. ## Community Standup: SQLite with .NET and EF Core In the [latest .NET Data Community Standup](https://www.youtube.com/live/n3Tt0F4g4is?feature=share), Eric Sink (creator of SQLitePCL.raw) and Brice Lambson (creator of Microsoft.Data.Sqlite) join the .NET Data Access Team to discuss everything SQLite on .NET. We start down low digging into different ways to get the SQLite native binaries using Eric’s packages. Then move up the stack to look at the basics of SQLite on .NET with Brice’s ADO.NET provider. Going higher still, we’ll look at how to get the most from SQLite using Dapper or EF Core. You can [watch all .NET Data Community Standups on YouTube](https://aka.ms/efstandups). We live-stream every other Wednesday to Twitch, YouTube, and Twitter. [Comment on GitHub](https://github.com/dotnet/efcore/issues/22700) with ideas for guests, demos, or anything else you want to see. ## EF Core 8 (EF8) EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023. The [EF Core 8 Plan](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan) is available publicly in our documentation. As always, [feedback is greatly appreciated](https://github.com/dotnet/efcore/issues/29853). 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 8 is linked in the table below together with its current high-level status. | EF Core 8 Theme | Feature | Status | |:--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| | Highly requested features | [JSON columns](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#json-columns) | In-progress | | | • [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) | Complete | | | [Value objects](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#value-objects) | Planned | | | [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) | Complete | | | [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) | Complete | | Cloud native and devices | [AOT and trimming with EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-with-ef-core) | In-progress | | | [AOT and trimming for ADO.NET](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-for-adonet) | In-progress | | Performance | [Woodstar](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#woodstar) | Planned | | Visual Tooling | [First-class T4 templates in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#first-class-t4-templates-in-visual-studio) | Planned | | | [EF Core Database First in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#ef-core-database-first-in-visual-studio) | Planned | | Developer experience | [Developer experience](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#theme-developer-experience) | In-progress | | | • [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) | Complete | | | • [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) | Complete | | | • [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) | Complete | | | • [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) | Complete | | | • [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) | Complete | | | • [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) | Complete | | | • [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) | Complete | | | • [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) | Complete | | | • [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) | Complete | | | • [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) | Complete | | | • [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) | Complete | | | • [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) | Complete | | | • [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) | Complete | | | • [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) | Complete | | | • [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) | Complete | | | • [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) | Complete | ## Burndown for EF8 This is the burndown chart the team uses internally to track progress on EF Core 8. EF8 Burndown - The upper chart shows work committed for EF8 - The lower chart shows work completed for EF8 - On each chart: - Enhancements are in green and are shown at the bottom - Bugs are in red and are stacked in the middle - Other issues are in blue and stacked at the top ## EF Core 7.0.3 EF Core 7.0.3 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.3). This is a patch release of EF Core 7 containing only [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.3+is%3Aclosed): - [Add-Migration fails with "An item with the same key has already been added" when renaming entity](https://github.com/dotnet/efcore/issues/27504) - [ExecuteUpdate fails when target entity has an owned entity](https://github.com/dotnet/efcore/issues/28727) - [EF Core 7 Rev eng: Missing HasForeignKey when referencing a navigation property with a unique constraint with DataAnnotations on](https://github.com/dotnet/efcore/issues/29418) - [Change in behaviour of CSharpHelper.Identifier(string name)](https://github.com/dotnet/efcore/issues/29450) - [NullReferenceException scaffolding when no primary key set](https://github.com/dotnet/efcore/issues/29516) - [Idempotent migration script not working on EFCore7.0 for AlterColumn when nullable changed from true to false](https://github.com/dotnet/efcore/issues/29530) - [6.0.11 to 7.0.0: [...] are both mapped to column [..] but are configured to use differing provider types ('double' and 'double?').'](https://github.com/dotnet/efcore/issues/29531) - [Generated Model Snapshot throws InvalidOperationException](https://github.com/dotnet/efcore/issues/29534) - [SQL Server bulk insert broken when new command applies pending commands and goes over the batch parameter limit](https://github.com/dotnet/efcore/issues/29539) - [Invalid singularization when scaffolding a manytomany table](https://github.com/dotnet/efcore/issues/29544) - [In EF7, SqLite unable to load spatialite using the NetTopologySuite Package](https://github.com/dotnet/efcore/issues/29584) - [Cannot access property through interface in ExecuteUpdate setter lambda](https://github.com/dotnet/efcore/issues/29618) - [DbContext scaffold missing IndexerProperty for M2M relation after moving to EF Core 7](https://github.com/dotnet/efcore/issues/29634) - [Performance regression in model building in Entity Framework Core 7](https://github.com/dotnet/efcore/issues/29642) - [Mixing sproc and non-sproc commands in the same batch may fail with a NullReferenceException](https://github.com/dotnet/efcore/issues/29643) - [Condition's order will cause different result when using .Contains() to search string cross varchar and nvarchar columns](https://github.com/dotnet/efcore/issues/29646) - [SaveChanges circular dependency in unique unfiltered index](https://github.com/dotnet/efcore/issues/29647) - [QueryTrackingBehavior resets to TrackAll when using DbContext pooling](https://github.com/dotnet/efcore/issues/29733) - [EFCore 7.0.0 - Graph of entity insertion throws a FK exception](https://github.com/dotnet/efcore/issues/29741) - [Replacing PK to PK TPH dependent with different type fails](https://github.com/dotnet/efcore/issues/29789) - [dotnet ef migrations add freezes](https://github.com/dotnet/efcore/issues/29826) - [InvalidOperationException when mapping properties of different types to the same column](https://github.com/dotnet/efcore/issues/29859) - [Obsoletion message for AutoTransactionsEnabled is wrong](https://github.com/dotnet/efcore/issues/29990) - [Incorrect NullReferenceException for parameter in split query with GroupBy](https://github.com/dotnet/efcore/issues/30022) ## EF Core 6.0.14 EF Core 6.0.14 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.14). This is a patch release of EF Core 6 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.13. ## Pull requests merged since the last update ### Community contributions - @coltskeen: [Fixing breaking-changes.md typo](https://github.com/dotnet/EntityFramework.Docs/pull/4244) - @dawei-wang: [Fix typo](https://github.com/dotnet/EntityFramework.Docs/pull/4248) Many thanks to all our contributors! ### EF Core - Model Building - [Throw for ad-hoc type with property that looks like collection navigation](https://github.com/dotnet/efcore/pull/30211) - [Use default schema for TPC tables](https://github.com/dotnet/efcore/pull/30214) - [Don't set table names from DbSet properties when Discriminator property is conflicted with the default but is then configured explicitly](https://github.com/dotnet/efcore/pull/30234) - (7.0.4) [Use default schema for TPC tables](https://github.com/dotnet/efcore/pull/30241) - Migrations - [Mark bundle Program.cs as auto-generated](https://github.com/dotnet/efcore/pull/30210) - [Store null table name in the model snapshot for TPC abstract types](https://github.com/dotnet/efcore/pull/30257) - (7.0.4) [Store null table name in the model snapshot for TPC abstract types](https://github.com/dotnet/efcore/pull/30275) - Documentation - [Add DateOnly/TimeOnly to What's New in EF8](https://github.com/dotnet/EntityFramework.Docs/pull/4245) - [Document temporal tables](https://github.com/dotnet/EntityFramework.Docs/pull/4252) - [Update guidance around in-memory database](https://github.com/dotnet/EntityFramework.Docs/pull/4254) - Change tracking - [Prevent re-entrance into DetectChanges](https://github.com/dotnet/efcore/pull/30204) - [Stop allowing identifying relationships from overriding cascade behavior](https://github.com/dotnet/efcore/pull/30213) - (7.0.4) [Prevent re-entrance into DetectChanges](https://github.com/dotnet/efcore/pull/30240) - Query - (7.0.4) [Count after Take throws "No column name was specified for column 1 of 't'](https://github.com/dotnet/efcore/pull/30144) - [Simplify SqlExpressionSimplifyingExpressionVisitor](https://github.com/dotnet/efcore/pull/30252) - Type mapping - [Remove unchecks in SQL Server type mappings](https://github.com/dotnet/efcore/pull/30164) - (7.0.4) [Use correct provider type for nullable value type with converter](https://github.com/dotnet/efcore/pull/30219) - Miscellaneous - [Open connection in tests if needed](https://github.com/dotnet/efcore/pull/30171) - Cosmos - [Update Cosmos tests log location](https://github.com/dotnet/efcore/pull/30154) ### Microsoft.Data.Sqlite - (7.0.4) [Move taking of lock earlier to avoid race in PruneCallback](https://github.com/dotnet/efcore/pull/30098) ## Builds to use - The [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md) are the most up-to-date available. - The daily builds now contain all issues merged for 7.0.x patch releases, as well as new code to be released in EF8 previews. - The daily builds work on both .NET 6 and .NET 7. - Current: [EF Core 7.0.3](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.3) - LTS: [EF Core 6.0.14](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.14) ## Releases See [GitHub Releases](https://github.com/dotnet/efcore/releases) and [EF Core releases and planning (Roadmap)](https://docs.microsoft.com/ef/core/what-is-new/) in our documentation for full details. ## Weekly/biweekly updates from previous years * [2022](https://github.com/dotnet/efcore/issues/27185) * [2021](https://github.com/dotnet/efcore/issues/23884) * [2020](https://github.com/dotnet/efcore/issues/19549) * [2019](https://github.com/dotnet/efcore/issues/15403) ## Feedback Comments are disabled on this issue to reduce noise. Please use [the related discussion issue](https://github.com/dotnet/efcore/issues/15404) for any comments on these status updates.

ajcvickers commented 1 year ago

March 2, 2023

Expand to see status from this week...

## Highlights ### New in the daily builds ([aka.ms/ef-daily-builds](https://aka.ms/ef-daily-builds)) - Official support for SQL Server HierarchyID - with contributions from @aljones, @cutig3r, @huan086, @kmataru, @mehdihaghshenas, @vyrotek, and the team - Support for JSON columns in SQLite - Support JSON columns in compiled models ### Plus, EF8 Preview 1 is [on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.1.23111.4)! - Raw SQL queries for unmapped types - DateOnly and TimeOnly support for SQL Server - Lazy-loading for no-tracking queries - Lazy-loading opt-out for navigations - Reverse engineering for Synapse/Dynamics 365 TDS - Lookup tracked entities by key or foreign key - MaxLength set by convention for TPH discriminators Complete documentation on What's New in Preview 1, with runnable samples: [aka.ms/ef8-new](https://aka.ms/ef8-new) ## Community Standup: MySQL and .NET In the [latest .NET Data Community Standup](https://www.youtube.com/live/XSEYNocnzlI?feature=share), the .NET Data Access Team is joined by Bradley Grainger and Laurents Meyer, authors of the open-source MySQL ADO.NET driver and of the Pomelo EF Core provider. Both these components work together to provide a 1st-class MySQL data access experience in .NET. We discuss some of the specifities of MySQL as a database and what it's like to work on open source data projects in .NET. You can [watch all .NET Data Community Standups on YouTube](https://aka.ms/efstandups). We live-stream every other Wednesday to Twitch, YouTube, and Twitter. [Comment on GitHub](https://github.com/dotnet/efcore/issues/22700) with ideas for guests, demos, or anything else you want to see. ## EF Core 8 (EF8) EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023. The [EF Core 8 Plan](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan) is available publicly in our documentation. As always, [feedback is greatly appreciated](https://github.com/dotnet/efcore/issues/29853). 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 8 is linked in the table below together with its current high-level status. | EF Core 8 Theme | Feature | Status | |:--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| | Highly requested features | [JSON columns](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#json-columns) | In-progress | | | • [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) | Complete | | | • [Support for JSON columns in SQLite](https://github.com/dotnet/efcore/issues/28816) | Complete | | | • [Support JSON columns in compiled models](https://github.com/dotnet/efcore/pull/30254) | Complete | | | [Value objects](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#value-objects) | Planned | | | [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) | Complete | | | [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) | Complete | | | [Support SQL Server HierarchyID in EF Core](https://github.com/dotnet/efcore/issues/24507) | Complete | | Cloud native and devices | [AOT and trimming with EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-with-ef-core) | In-progress | | | [AOT and trimming for ADO.NET](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-for-adonet) | In-progress | | Performance | [Woodstar](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#woodstar) | In-progress | | Visual Tooling | [First-class T4 templates in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#first-class-t4-templates-in-visual-studio) | Planned | | | [EF Core Database First in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#ef-core-database-first-in-visual-studio) | In-progress | | Developer experience | [Developer experience](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#theme-developer-experience) | In-progress | | | • [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) | Complete | | | • [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) | Complete | | | • [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) | Complete | | | • [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) | Complete | | | • [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) | Complete | | | • [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) | Complete | | | • [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) | Complete | | | • [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) | Complete | | | • [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) | Complete | | | • [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) | Complete | | | • [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) | Complete | | | • [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) | Complete | | | • [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) | Complete | | | • [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) | Complete | | | • [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) | Complete | | | • [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) | Complete | ## Burndown for EF8 This is the burndown chart the team uses internally to track progress on EF Core 8. EF8 Burndown - The upper chart shows work committed for EF8 - The lower chart shows work completed for EF8 - On each chart: - Enhancements are in green and are shown at the bottom - Bugs are in red and are stacked in the middle - Other issues are in blue and stacked at the top ## EF Core 7.0.3 EF Core 7.0.3 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.3). This is a patch release of EF Core 7 containing only [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.3+is%3Aclosed): - [Add-Migration fails with "An item with the same key has already been added" when renaming entity](https://github.com/dotnet/efcore/issues/27504) - [ExecuteUpdate fails when target entity has an owned entity](https://github.com/dotnet/efcore/issues/28727) - [EF Core 7 Rev eng: Missing HasForeignKey when referencing a navigation property with a unique constraint with DataAnnotations on](https://github.com/dotnet/efcore/issues/29418) - [Change in behaviour of CSharpHelper.Identifier(string name)](https://github.com/dotnet/efcore/issues/29450) - [NullReferenceException scaffolding when no primary key set](https://github.com/dotnet/efcore/issues/29516) - [Idempotent migration script not working on EFCore7.0 for AlterColumn when nullable changed from true to false](https://github.com/dotnet/efcore/issues/29530) - [6.0.11 to 7.0.0: [...] are both mapped to column [..] but are configured to use differing provider types ('double' and 'double?').'](https://github.com/dotnet/efcore/issues/29531) - [Generated Model Snapshot throws InvalidOperationException](https://github.com/dotnet/efcore/issues/29534) - [SQL Server bulk insert broken when new command applies pending commands and goes over the batch parameter limit](https://github.com/dotnet/efcore/issues/29539) - [Invalid singularization when scaffolding a manytomany table](https://github.com/dotnet/efcore/issues/29544) - [In EF7, SqLite unable to load spatialite using the NetTopologySuite Package](https://github.com/dotnet/efcore/issues/29584) - [Cannot access property through interface in ExecuteUpdate setter lambda](https://github.com/dotnet/efcore/issues/29618) - [DbContext scaffold missing IndexerProperty for M2M relation after moving to EF Core 7](https://github.com/dotnet/efcore/issues/29634) - [Performance regression in model building in Entity Framework Core 7](https://github.com/dotnet/efcore/issues/29642) - [Mixing sproc and non-sproc commands in the same batch may fail with a NullReferenceException](https://github.com/dotnet/efcore/issues/29643) - [Condition's order will cause different result when using .Contains() to search string cross varchar and nvarchar columns](https://github.com/dotnet/efcore/issues/29646) - [SaveChanges circular dependency in unique unfiltered index](https://github.com/dotnet/efcore/issues/29647) - [QueryTrackingBehavior resets to TrackAll when using DbContext pooling](https://github.com/dotnet/efcore/issues/29733) - [EFCore 7.0.0 - Graph of entity insertion throws a FK exception](https://github.com/dotnet/efcore/issues/29741) - [Replacing PK to PK TPH dependent with different type fails](https://github.com/dotnet/efcore/issues/29789) - [dotnet ef migrations add freezes](https://github.com/dotnet/efcore/issues/29826) - [InvalidOperationException when mapping properties of different types to the same column](https://github.com/dotnet/efcore/issues/29859) - [Obsoletion message for AutoTransactionsEnabled is wrong](https://github.com/dotnet/efcore/issues/29990) - [Incorrect NullReferenceException for parameter in split query with GroupBy](https://github.com/dotnet/efcore/issues/30022) ## EF Core 6.0.14 EF Core 6.0.14 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.14). This is a patch release of EF Core 6 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.13. ## Pull requests merged since the last update ### Community contributions - @aljones, @cutig3r, @huan086, @kmataru, @mehdihaghshenas, @vyrotek: [SqlServer: Support hierarchyid](https://github.com/dotnet/efcore/pull/30291) - @AinoraZ: [Ainoraz.EFCore.IncludeBuilder supports EF7](https://github.com/dotnet/EntityFramework.Docs/pull/4271) Many thanks to all our contributors! ### EF Core - Query - [Added nullable property to Json mapped model resulting in errors instead of mapping non existing json property to null](https://github.com/dotnet/efcore/pull/30101) - [Evaluate SqlServerConvertTranslator.SupportedMethods once](https://github.com/dotnet/efcore/pull/30340) - [Adding procedural test generation to test interactions between various operators](https://github.com/dotnet/efcore/pull/30280) - [Use NormalizeDelimitersInRawString in Ad_hoc_query_for_shared_type_entity_type_works](https://github.com/dotnet/efcore/pull/30378) - Documentation - [Add example to Migrations bundle docs](https://github.com/dotnet/EntityFramework.Docs/pull/4253) - [Cosmos updates](https://github.com/dotnet/EntityFramework.Docs/pull/4255) - [Document SQLite breaking change around the RETURNING clause](https://github.com/dotnet/EntityFramework.Docs/pull/4263) - JSON - [Json: add support for Sqlite provider](https://github.com/dotnet/efcore/pull/30302) - [Support JSON columns in compiled models](https://github.com/dotnet/efcore/pull/30254) - Miscellaneous - [Index source code to source.dot.net](https://github.com/dotnet/efcore/pull/30303) - Dependencies - [Bump Microsoft.Azure.Cosmos from 3.31.2 to 3.32.0](https://github.com/dotnet/efcore/pull/30272) - Scaffolding - [Add back setter for scaffolded collection navigations](https://github.com/dotnet/efcore/pull/30311) ## Builds to use - The [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md) are the most up-to-date available. - The daily builds now contain all issues merged for 7.0.x patch releases, as well as new code to be released in EF8 previews. - The daily builds work on both .NET 6 and .NET 7. - Preview: [EF Core 8 Preview 1](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.1.23111.4) - Preview releases lag behind the daily build. We recommend using the daily builds whenever possible. - Current: [EF Core 7.0.3](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.3) - LTS: [EF Core 6.0.14](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.14) ## Releases See [GitHub Releases](https://github.com/dotnet/efcore/releases) and [EF Core releases and planning (Roadmap)](https://docs.microsoft.com/ef/core/what-is-new/) in our documentation for full details. ## Weekly/biweekly updates from previous years * [2022](https://github.com/dotnet/efcore/issues/27185) * [2021](https://github.com/dotnet/efcore/issues/23884) * [2020](https://github.com/dotnet/efcore/issues/19549) * [2019](https://github.com/dotnet/efcore/issues/15403) ## Feedback Comments are disabled on this issue to reduce noise. Please use [the related discussion issue](https://github.com/dotnet/efcore/issues/15404) for any comments on these status updates.

ajcvickers commented 1 year ago

March 16, 2023

Expand to see status from this week...

## Highlights ### EF8 Preview 2 is [on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.2.23128.3)! Preview 2 contains support for [JSON column mapping on SQLite](https://github.com/dotnet/efcore/issues/28816) and official* support for [the `hierarchyid` type on SQL Server](https://github.com/dotnet/efcore/issues/365). Hierarchy IDs are used to map tree structures. For example, the diagram below shows the hierarchy ID mappings for a paternal family tree of halflings: ![Halfling family tree](https://user-images.githubusercontent.com/1430078/225726936-cacdcb59-66d1-4941-b9e0-19ff4adc8737.png) We can then use these mappings to, for example, find the common ancestor of Bilbo and Frodo: ```csharp async Task FindCommonAncestor(Halfling first, Halfling second) => await context.Halflings .Where( ancestor => first.PathFromPatriarch.IsDescendantOf(ancestor.PathFromPatriarch) && second.PathFromPatriarch.IsDescendantOf(ancestor.PathFromPatriarch)) .OrderByDescending(ancestor => ancestor.PathFromPatriarch.GetLevel()) .FirstOrDefaultAsync(); ``` Which translates to: ```sql SELECT TOP(1) [h].[Id], [h].[Name], [h].[PathFromPatriarch], [h].[YearOfBirth] FROM [Halflings] AS [h] WHERE @__first_PathFromPatriarch_0.IsDescendantOf([h].[PathFromPatriarch]) = CAST(1 AS bit) AND @__second_PathFromPatriarch_1.IsDescendantOf([h].[PathFromPatriarch]) = CAST(1 AS bit) ORDER BY [h].[PathFromPatriarch].GetLevel() DESC ``` And the answer is, of course, Balbo. See [aka.ms/ef8-new](https://aka.ms/ef8-new) for more fun with halflings and other documentation for Preview 1 and Preview 2. With runnable samples on GitHub! *Unofficial support for `hierarchyid` in EF Core has been available for many years via the [EntityFrameworkCore.SqlServer.HierarchyId](https://www.nuget.org/packages/EntityFrameworkCore.SqlServer.HierarchyId) package. This package has been maintained as a collaboration between the community and the EF team. Now that there is official support for `hierarchyid` in .NET, the code from this community package forms, with the permission of the original contributors, the basis for the official package described here. Many thanks to all those involved over the years, including [@aljones](https://github.com/aljones), [@cutig3r](https://github.com/cutig3r), [@huan086](https://github.com/huan086), [@kmataru](https://github.com/kmataru), [@mehdihaghshenas](https://github.com/mehdihaghshenas), [@vyrotek](https://github.com/vyrotek), and [@yuryjhol](https://github.com/yuryjhol). ## Community Standup: IQueryable, LINQ and the EF Core query pipeline In the [latest .NET Data Community Standup](https://www.youtube.com/live/1Ld3dtnTrMw?feature=share), 2000 viewers joined us over the course of a nearly two hour event to dive deep under the hood and see how EF Core processes LINQ queries, translates them to SQL and executes them on your database. We introduced key concepts such as IQueryable and LINQ providers, and looked into how EF Core uses caching to make your querying lightning-fast. You can [watch all .NET Data Community Standups on YouTube](https://aka.ms/efstandups). We live-stream every other Wednesday to Twitch, YouTube, and Twitter. [Comment on GitHub](https://github.com/dotnet/efcore/issues/22700) with ideas for guests, demos, or anything else you want to see. ## EF Core 8 (EF8) EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023. The [EF Core 8 Plan](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan) is available publicly in our documentation. As always, [feedback is greatly appreciated](https://github.com/dotnet/efcore/issues/29853). 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 8 is linked in the table below together with its current high-level status. | EF Core 8 Theme | Feature | Status | |:--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| | Highly requested features | [JSON columns](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#json-columns) | In-progress | | | • [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) | Complete | | | • [Support for JSON columns in SQLite](https://github.com/dotnet/efcore/issues/28816) | Complete | | | • [Support JSON columns in compiled models](https://github.com/dotnet/efcore/pull/30254) | Complete | | | [Value objects](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#value-objects) | Planned | | | [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) | Complete | | | [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) | Complete | | | [Support SQL Server HierarchyID in EF Core](https://github.com/dotnet/efcore/issues/24507) | Complete | | Cloud native and devices | [AOT and trimming with EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-with-ef-core) | In-progress | | | [AOT and trimming for ADO.NET](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-for-adonet) | In-progress | | Performance | [Woodstar](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#woodstar) | In-progress | | Visual Tooling | [First-class T4 templates in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#first-class-t4-templates-in-visual-studio) | Planned | | | [EF Core Database First in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#ef-core-database-first-in-visual-studio) | In-progress | | Developer experience | [Developer experience](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#theme-developer-experience) | In-progress | | | • [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) | Complete | | | • [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) | Complete | | | • [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) | Complete | | | • [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) | Complete | | | • [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) | Complete | | | • [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) | Complete | | | • [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) | Complete | | | • [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) | Complete | | | • [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) | Complete | | | • [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) | Complete | | | • [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) | Complete | | | • [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) | Complete | | | • [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) | Complete | | | • [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) | Complete | | | • [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) | Complete | | | • [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) | Complete | ## Burndown for EF8 This is the burndown chart the team uses internally to track progress on EF Core 8. EF8 Burndown - The upper chart shows work committed for EF8 - The lower chart shows work completed for EF8 - On each chart: - Enhancements are in green and are shown at the bottom - Bugs are in red and are stacked in the middle - Other issues are in blue and stacked at the top ## EF Core 7.0.4 EF Core 7.0.4 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.4). This is a patch release of EF Core 7 containing only [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.4+is%3Aclosed): - [Exception replacing multi-level relationship in EF7](https://github.com/dotnet/efcore/issues/30135) - [Deletion can cause error "The association between entity types A and B has been severed..."](https://github.com/dotnet/efcore/issues/30122) - [Non-empty second migration in TPC scheme using inheritance](https://github.com/dotnet/efcore/issues/30058) - [Entity Framework Core 7 keeps creating the same migration for Nullable DateTime field](https://github.com/dotnet/efcore/issues/29985) - [TPC mapping strategy not respecting default database schema during migration](https://github.com/dotnet/efcore/issues/29899) - [Count after Take throws "No column name was specified for column 1 of 't'."](https://github.com/dotnet/efcore/issues/29667) And for [Microsoft.Data.Sqlite](https://www.nuget.org/packages/Microsoft.Data.Sqlite/7.0.4): - [ArgumentOutOfRangeException in SqliteConnectionFactory.PruneCallback](https://github.com/dotnet/efcore/issues/29952) ## EF Core 6.0.15 EF Core 6.0.15 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.15). This is a patch release of EF Core 6 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.14. ## Pull requests merged since the last update ### Community contributions - @Suchiman: [Fix Typo](https://github.com/dotnet/efcore/pull/30480) Many thanks to all our contributors! ### EF Core - Query - [Some fixes to SqlQueryTestBase](https://github.com/dotnet/efcore/pull/30384) - [Make test provider-agnostic](https://github.com/dotnet/efcore/pull/30388) - [Better exception when same parameter instance is reused in multiple lambdas](https://github.com/dotnet/efcore/pull/30427) - [Full management of SQL operator precedence/associativity](https://github.com/dotnet/efcore/pull/30371) - [EF7 generating incorrect SQL for the Concat/Union All](https://github.com/dotnet/efcore/pull/30452) - [Missing parentheses when using Expression.Or over bool (instead of OrElse)](https://github.com/dotnet/efcore/pull/30454) - [Stop checking store types for set operations](https://github.com/dotnet/efcore/pull/30468) - (7.0.5) [EF7 generating incorrect SQL for the Concat/Union All](https://github.com/dotnet/efcore/pull/30451) - [Duplicate table alias in generated select query (An item with the same key has already been added)](https://github.com/dotnet/efcore/pull/30484) - Documentation - [Link to Google.Cloud.EntityFrameworkCore.Spanner NuGet package](https://github.com/dotnet/EntityFramework.Docs/pull/4276) - [Improve section on dynamic query generation](https://github.com/dotnet/EntityFramework.Docs/pull/4270) - [Improve instructions on resetting migrations](https://github.com/dotnet/EntityFramework.Docs/pull/4272) - [What's New in EF Core 8 Preview 2](https://github.com/dotnet/EntityFramework.Docs/pull/4287) - [Update spatial.md](https://github.com/dotnet/EntityFramework.Docs/pull/4290) - JSON - [Updating property with conversion from string to other type fails on sql server](https://github.com/dotnet/efcore/pull/30380) - (7.0.5) [Added nullable property to Json mapped model resulting in errors instead of mapping non existing json property to null](https://github.com/dotnet/efcore/pull/30333) - [Optimize update path for single property element - don't wrap the value in json array](https://github.com/dotnet/efcore/pull/30422) - [Json column fails to materialize only when default interceptor used](https://github.com/dotnet/efcore/pull/30403) - Migrations - [Handle entity paths with no tables in model differ](https://github.com/dotnet/efcore/pull/30347) - (7.0.5) [Handle entity paths with no tables in model differ](https://github.com/dotnet/efcore/pull/30394) - Model building - [Port simple relationship scenarios from docs samples](https://github.com/dotnet/efcore/pull/30365) - [Don't warn in model validation when bool property with default value has nullable backing field](https://github.com/dotnet/efcore/pull/30395) - In-memory database - [Temporary fix for in-memory test failures](https://github.com/dotnet/efcore/pull/30461) - [Stop using model references as identifiers in the in-memory database](https://github.com/dotnet/efcore/pull/30477) - Dependencies - [Bump Microsoft.Azure.Cosmos from 3.32.0 to 3.32.1](https://github.com/dotnet/efcore/pull/30417) - Scaffolding - (7.0.5) [Add back setter for scaffolded collection navigations](https://github.com/dotnet/efcore/pull/30343) - Cosmos - [Fix for Cosmos embedded line ending](https://github.com/dotnet/efcore/pull/30379) - SaveChanges - [Don't log both SaveChangesFailed and OptimisticConcurrencyException for same event](https://github.com/dotnet/efcore/pull/30445) - Change tracking - [Convert when using comparer for non-nullable dependent](https://github.com/dotnet/efcore/pull/30398) ### Microsoft.Data.Sqlite - [Optimize SqliteDataReader.GetFieldValue](https://github.com/dotnet/efcore/pull/30412) ## Builds to use - The [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md) are the most up-to-date available. - The daily builds now contain all issues merged for 7.0.x patch releases, as well as new code to be released in EF8 previews. - The daily builds work on both .NET 6 and .NET 7. - Preview: [EF Core 8 Preview 2](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.2.23128.3) - Preview releases lag behind the daily build. We recommend using the daily builds whenever possible. - Current: [EF Core 7.0.4](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.4) - LTS: [EF Core 6.0.15](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.15) ## Releases See [GitHub Releases](https://github.com/dotnet/efcore/releases) and [EF Core releases and planning (Roadmap)](https://docs.microsoft.com/ef/core/what-is-new/) in our documentation for full details. ## Weekly/biweekly updates from previous years * [2022](https://github.com/dotnet/efcore/issues/27185) * [2021](https://github.com/dotnet/efcore/issues/23884) * [2020](https://github.com/dotnet/efcore/issues/19549) * [2019](https://github.com/dotnet/efcore/issues/15403) ## Feedback Comments are disabled on this issue to reduce noise. Please use [the related discussion issue](https://github.com/dotnet/efcore/issues/15404) for any comments on these status updates.

ajcvickers commented 1 year ago

March 30, 2023

Expand to see status from this week...

## Highlights ### Major overall of the EF Core [relationship mapping docs](https://learn.microsoft.com/ef/core/modeling/relationships) Eight new pages covering: - **12** one-to-many relationship examples - **13** one-to-one relationship examples - **16** many-to-many relationship examples - Using foreign, primary, and alternate keys - Navigation configuration - What the relationship mapping conventions do - Using mapping attributes/data annotations - A glossary of terms All with [runnable code on GitHub](https://github.com/dotnet/EntityFramework.Docs/tree/main/samples/core/Modeling/Relationships)! **Bonus**: A simple intro to the basic concepts. ### Other new documentation - Modernized [_Installing EF Core_](https://learn.microsoft.com/ef/core/get-started/overview/install) docs - Additional details in [_Scaffolding (Reverse Engineering)_](https://learn.microsoft.com/ef/core/managing-schemas/scaffolding/?tabs=dotnet-core-cli) docs, including: - More details on handling conncection strings and using User Secrets - Clarification and examples for selecting tables, views, and schemas - Example preserving database naming - Scaffolding on many-to-many relationships - Use of C# nullable reference types - Approaches for scaffolding once verses repeated scaffolding - Documentation for [EntityTypeConfigurationAttribute](https://learn.microsoft.com/ef/core/modeling/#grouping-configuration) ### Progress on... - Work has started on value objects support. - The relational model can now be compiled, which is needed for AOT. - Improved translation for `Contains` in under way. ## Community Standup: Using hierarchical data in SQL Server and PostgreSQL with EF Core In the [latest .NET Data Community Standup](https://www.youtube.com/live/pmnHGWYpCfg?feature=share), the .NET Data Access Team demonstrated mapping hierarchical data structures to relational databases using EF Core. This included using “hierarchyid” on SQL Server/Azure SQL and “ltree” on PostgresSQL, with demos using a family tree structure. EF Core is used to write LINQ queries against the hierarchy to find ancestors and descendants in various ways, as well as perform manipulation of subtrees for updates. And, as always, we answered questions from the live audience. You can [watch all .NET Data Community Standups on YouTube](https://aka.ms/efstandups). We live-stream every other Wednesday to Twitch, YouTube, and Twitter. [Comment on GitHub](https://github.com/dotnet/efcore/issues/22700) with ideas for guests, demos, or anything else you want to see. ## EF Core 8 (EF8) EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023. The [EF Core 8 Plan](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan) is available publicly in our documentation. As always, [feedback is greatly appreciated](https://github.com/dotnet/efcore/issues/29853). 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 8 is linked in the table below together with its current high-level status. | EF Core 8 Theme | Feature | Status | |:--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| | Highly requested features | [JSON columns](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#json-columns) | In-progress | | | • [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) | Complete | | | • [Support for JSON columns in SQLite](https://github.com/dotnet/efcore/issues/28816) | Complete | | | • [Support JSON columns in compiled models](https://github.com/dotnet/efcore/pull/30254) | Complete | | | [Value objects](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#value-objects) | In-progress | | | [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) | Complete | | | [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) | Complete | | | [Support SQL Server HierarchyID in EF Core](https://github.com/dotnet/efcore/issues/24507) | Complete | | Cloud native and devices | [AOT and trimming with EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-with-ef-core) | In-progress | | | [AOT and trimming for ADO.NET](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-for-adonet) | In-progress | | Performance | [Woodstar](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#woodstar) | In-progress | | Visual Tooling | [First-class T4 templates in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#first-class-t4-templates-in-visual-studio) | Planned | | | [EF Core Database First in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#ef-core-database-first-in-visual-studio) | In-progress | | Developer experience | [Developer experience](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#theme-developer-experience) | In-progress | | | • [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) | Complete | | | • [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) | Complete | | | • [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) | Complete | | | • [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) | Complete | | | • [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) | Complete | | | • [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) | Complete | | | • [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) | Complete | | | • [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) | Complete | | | • [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) | Complete | | | • [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) | Complete | | | • [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) | Complete | | | • [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) | Complete | | | • [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) | Complete | | | • [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) | Complete | | | • [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) | Complete | | | • [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) | Complete | ## Burndown for EF8 This is the burndown chart the team uses internally to track progress on EF Core 8. EF8 Burndown - The upper chart shows work committed for EF8 - The lower chart shows work completed for EF8 - On each chart: - Enhancements are in green and are shown at the bottom - Bugs are in red and are stacked in the middle - Other issues are in blue and stacked at the top ## EF Core 7.0.4 EF Core 7.0.4 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.4). This is a patch release of EF Core 7 containing only [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.4+is%3Aclosed): - [Exception replacing multi-level relationship in EF7](https://github.com/dotnet/efcore/issues/30135) - [Deletion can cause error "The association between entity types A and B has been severed..."](https://github.com/dotnet/efcore/issues/30122) - [Non-empty second migration in TPC scheme using inheritance](https://github.com/dotnet/efcore/issues/30058) - [Entity Framework Core 7 keeps creating the same migration for Nullable DateTime field](https://github.com/dotnet/efcore/issues/29985) - [TPC mapping strategy not respecting default database schema during migration](https://github.com/dotnet/efcore/issues/29899) - [Count after Take throws "No column name was specified for column 1 of 't'."](https://github.com/dotnet/efcore/issues/29667) And for [Microsoft.Data.Sqlite](https://www.nuget.org/packages/Microsoft.Data.Sqlite/7.0.4): - [ArgumentOutOfRangeException in SqliteConnectionFactory.PruneCallback](https://github.com/dotnet/efcore/issues/29952) ## EF Core 6.0.15 EF Core 6.0.15 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.15). This is a patch release of EF Core 6 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.14. ## Pull requests merged since the last update ### Community contributions - @ilmalte: [Create directory chain if doesn't exist for ef migrations bundle](https://github.com/dotnet/efcore/pull/30392) - @stevendarby: [Don't duplicate query filter parameters](https://github.com/dotnet/efcore/pull/29422) Many thanks to all our contributors! ### EF Core - Query - [Remove most SQL parentheses for AND/OR](https://github.com/dotnet/efcore/pull/30525) - [Fixes around IncludeExpression for ExecuteUpdate/Delete](https://github.com/dotnet/efcore/pull/30571) - [IndexOutOfRangeException in CreateNavigationExpansionExpression(Expression sourceExpression, IEntityType entityType) / get_Chars(Int32 index) when EF class named "<>f__AnonymousType01Child" in 7.0.2 version](https://github.com/dotnet/efcore/pull/30537) - Documentation - [Update Installing EF Core](https://github.com/dotnet/EntityFramework.Docs/pull/4295) - [Updates to scaffolding docs](https://github.com/dotnet/EntityFramework.Docs/pull/4297) - [Document EntityTypeConfigurationAttribute](https://github.com/dotnet/EntityFramework.Docs/pull/4300) - JSON - [JSON collection issues incorrect warning CompositeKeyWithValueGeneration](https://github.com/dotnet/efcore/pull/30517) - [Linq select cannot project an entity containing both Json columns and ICollections](https://github.com/dotnet/efcore/pull/30566) - [Query/Json: projecting entity collection along with json collection generates invalid shaper](https://github.com/dotnet/efcore/pull/30568) - Dependencies - [Bump Newtonsoft.Json from 13.0.2 to 13.0.3](https://github.com/dotnet/efcore/pull/30465) - [Bump Microsoft.Azure.Cosmos from 3.32.1 to 3.32.2](https://github.com/dotnet/efcore/pull/30536) - [Bump Microsoft.AspNetCore.OData from 8.0.12 to 8.1.0](https://github.com/dotnet/efcore/pull/30585) - Miscellaneous - [Fix bad merge](https://github.com/dotnet/efcore/pull/30511) - [API review changes](https://github.com/dotnet/efcore/pull/30526) - [HierarchyId: Address API Review feedback](https://github.com/dotnet/efcore/pull/30588) - Model building - [Generate compiled relational model](https://github.com/dotnet/efcore/pull/30494) ## Builds to use - The [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md) are the most up-to-date available. - The daily builds now contain all issues merged for 7.0.x patch releases, as well as new code to be released in EF8 previews. - The daily builds work on both .NET 6 and .NET 7. - Preview: [EF Core 8 Preview 2](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.2.23128.3) - Preview releases lag behind the daily build. We recommend using the daily builds whenever possible. - Current: [EF Core 7.0.4](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.4) - LTS: [EF Core 6.0.15](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.15) ## Releases See [GitHub Releases](https://github.com/dotnet/efcore/releases) and [EF Core releases and planning (Roadmap)](https://docs.microsoft.com/ef/core/what-is-new/) in our documentation for full details. ## Weekly/biweekly updates from previous years * [2022](https://github.com/dotnet/efcore/issues/27185) * [2021](https://github.com/dotnet/efcore/issues/23884) * [2020](https://github.com/dotnet/efcore/issues/19549) * [2019](https://github.com/dotnet/efcore/issues/15403) ## Feedback Comments are disabled on this issue to reduce noise. Please use [the related discussion issue](https://github.com/dotnet/efcore/issues/15404) for any comments on these status updates.

ajcvickers commented 1 year ago

April 13, 2023

Expand to see status from this week...

## Highlights EF Core 8 (EF8) Preview 3 is [on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.3.23174.2)! No big features in this preview, but some nice smaller enhancements: - [Optimize update path for single property JSON element](https://github.com/dotnet/efcore/issues/30410) - [JSON columns can be used in compiled models](https://github.com/dotnet/efcore/issues/29602) - [Unneeded parentheses removed in SQL queries ](https://github.com/dotnet/efcore/issues/26767) - [Set operations are supported over non-entity projections with different facets](https://github.com/dotnet/efcore/issues/19129) EF Core 7.0.5 is also [on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.5), with [four important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.5+is%3Aclosed). ## Community Standup: Using hierarchical data in SQL Server and PostgreSQL with EF Core In the [latest .NET Data Community Standup](https://www.youtube.com/live/pmnHGWYpCfg?feature=share), the .NET Data Access Team demonstrated mapping hierarchical data structures to relational databases using EF Core. This included using “hierarchyid” on SQL Server/Azure SQL and “ltree” on PostgresSQL, with demos using a family tree structure. EF Core is used to write LINQ queries against the hierarchy to find ancestors and descendants in various ways, as well as perform manipulation of subtrees for updates. And, as always, we answered questions from the live audience. You can [watch all .NET Data Community Standups on YouTube](https://aka.ms/efstandups). We live-stream every other Wednesday to Twitch, YouTube, and Twitter. [Comment on GitHub](https://github.com/dotnet/efcore/issues/22700) with ideas for guests, demos, or anything else you want to see. ## EF Core 8 (EF8) EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023. The [EF Core 8 Plan](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan) is available publicly in our documentation. As always, [feedback is greatly appreciated](https://github.com/dotnet/efcore/issues/29853). 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 8 is linked in the table below together with its current high-level status. | EF Core 8 Theme | Feature | Status | |:--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| | Highly requested features | [JSON columns](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#json-columns) | In-progress | | | • [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) | Complete | | | • [Support for JSON columns in SQLite](https://github.com/dotnet/efcore/issues/28816) | Complete | | | • [Support JSON columns in compiled models](https://github.com/dotnet/efcore/pull/30254) | Complete | | | [Value objects](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#value-objects) | In-progress | | | [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) | Complete | | | [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) | Complete | | | [Support SQL Server HierarchyID in EF Core](https://github.com/dotnet/efcore/issues/24507) | Complete | | Cloud native and devices | [AOT and trimming with EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-with-ef-core) | In-progress | | | [AOT and trimming for ADO.NET](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-for-adonet) | In-progress | | Performance | [Woodstar](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#woodstar) | In-progress | | Visual Tooling | [First-class T4 templates in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#first-class-t4-templates-in-visual-studio) | Planned | | | [EF Core Database First in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#ef-core-database-first-in-visual-studio) | In-progress | | Developer experience | [Developer experience](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#theme-developer-experience) | In-progress | | | • [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) | Complete | | | • [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) | Complete | | | • [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) | Complete | | | • [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) | Complete | | | • [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) | Complete | | | • [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) | Complete | | | • [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) | Complete | | | • [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) | Complete | | | • [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) | Complete | | | • [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) | Complete | | | • [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) | Complete | | | • [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) | Complete | | | • [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) | Complete | | | • [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) | Complete | | | • [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) | Complete | | | • [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) | Complete | ## Burndown for EF8 This is the burndown chart the team uses internally to track progress on EF Core 8. EF8 Burndown - The upper chart shows work committed for EF8 - The lower chart shows work completed for EF8 - On each chart: - Enhancements are in green and are shown at the bottom - Bugs are in red and are stacked in the middle - Other issues are in blue and stacked at the top ## EF Core 8 Preview 3 EF Core 8 (EF8) Preview 3 is [available from NuGet](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.3.23174.2) Preview 3 contains the following new features: - [Optimize update path for single property JSON element](https://github.com/dotnet/efcore/issues/30410) - [JSON columns can be used in compiled models](https://github.com/dotnet/efcore/issues/29602) - [Unneeded parentheses removed in SQL queries ](https://github.com/dotnet/efcore/issues/26767) - [Set operations are supported over non-entity projections with different facets](https://github.com/dotnet/efcore/issues/19129) In addition, Preview 2 contains the following features from Previews 1 and 2: - [Json: add support for Sqlite provider](https://github.com/dotnet/efcore/issues/28816) - [SQL Server: Support hierarchyid](https://github.com/dotnet/efcore/issues/365) - [Configuration to opt out of occasionally problematic SaveChanges optimizations](https://github.com/dotnet/efcore/issues/29916) - [Add convention types for triggers](https://github.com/dotnet/efcore/issues/28687) - [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) - [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) - [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) - [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) - [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) - [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) - [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) - [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) - [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) - [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) - [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) - [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) - [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) - [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) - [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) - [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) - [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) - [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) - [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) See GitHub for all issues resolved in [Preview 1](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview1+is%3Aclosed), [Preview 2](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview2+is%3Aclosed), and [Preview 3](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview3+is%3Aclosed). ## EF Core 7.0.5 EF Core 7.0.5 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.5). This is a patch release of EF Core 7 containing only [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.5+is%3Aclosed): - [Can't add migration renaming a column on TPC root](https://github.com/dotnet/efcore/issues/30321) - [Scaffolded collection navigation properties do not have setters](https://github.com/dotnet/efcore/issues/30286) - [EF7 generating incorrect SQL for the Concat/Union All](https://github.com/dotnet/efcore/issues/30273) - [Added nullable property to Json mapped model resulting in errors instead of mapping non existing json property to null](https://github.com/dotnet/efcore/issues/30028) ## EF Core 6.0.16 EF Core 6.0.16 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.16). This is a patch release of EF Core 6 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.15. ## Pull requests merged since the last update ### Community contributions - @Marusyk: [Translate DateTimeOffset.ToUnixTime Seconds Milliseconds](https://github.com/dotnet/efcore/pull/28978) - @dmihaita: [Proposed fix for Optional RestartSequenceOperation.StartValue](https://github.com/dotnet/efcore/pull/29346) - @walkindude: [Fix a couple of typos in the relationships docs](https://github.com/dotnet/EntityFramework.Docs/pull/4309) - @walkindude: [Touch-ups to the "relationships" documentation](https://github.com/dotnet/EntityFramework.Docs/pull/4310) - @ErikEJ: [Add InterBase EF Core 6 provider](https://github.com/dotnet/EntityFramework.Docs/pull/4305) - @Kumima: [Update foreign-and-principal-keys.md](https://github.com/dotnet/EntityFramework.Docs/pull/4312) - @Asaf-Malin: [remove unnecessary )](https://github.com/dotnet/EntityFramework.Docs/pull/4313) - @NielsPilgaard: [Update relationships.md](https://github.com/dotnet/EntityFramework.Docs/pull/4308) - @Kumima: [Update one-to-one.md](https://github.com/dotnet/EntityFramework.Docs/pull/4311) - @alekson-sh: [Fix typo in one-to-many.md](https://github.com/dotnet/EntityFramework.Docs/pull/4316) Many thanks to all our contributors! ### EF Core - JSON - [Small fix to JSON update tests](https://github.com/dotnet/efcore/pull/30616) - (7.0.6) [Projecting json entity/reference as well as regular entity collection](https://github.com/dotnet/efcore/pull/30600) - (7.0.6) [Updating property with conversion from string to other type fails on sql server](https://github.com/dotnet/efcore/pull/30615) - Documentation - [Major overhaul of the "relationships" documentation](https://github.com/dotnet/EntityFramework.Docs/pull/4269) - [Add note on TransactionScope on supporting async](https://github.com/dotnet/EntityFramework.Docs/pull/4307) - [Update tracking.md](https://github.com/dotnet/EntityFramework.Docs/pull/4298) - Dependencies - [Bump Microsoft.Azure.Cosmos from 3.32.2 to 3.32.3](https://github.com/dotnet/efcore/pull/30613) - [Bump Microsoft.Data.SqlClient from 5.1.0 to 5.1.1](https://github.com/dotnet/efcore/pull/30612) - [Bump Microsoft.AspNetCore.OData from 8.1.0 to 8.1.1](https://github.com/dotnet/efcore/pull/30659) - Query - (7.0.6) [Duplicate table alias in generated select query (An item with the same key has already been added)](https://github.com/dotnet/efcore/pull/30486) - (7.0.6) [IndexOutOfRangeException in CreateNavigationExpansionExpression](https://github.com/dotnet/efcore/pull/30591) - Bulk updates - (7.0.6) [Fixes around IncludeExpression for ExecuteUpdate/Delete](https://github.com/dotnet/efcore/pull/30579) - Scaffolding - [Fix handling of ConnectionString annotation](https://github.com/dotnet/efcore/pull/30631) - SaveChanges - (7.0.6) [Avoid considering unchanged properties as modified](https://github.com/dotnet/efcore/pull/30640) - Type mapping - [Trim the mapping store type base name](https://github.com/dotnet/efcore/pull/30593) ### Microsoft.Data.Sqlite - [Handle quotes in table name in GetSchemaTable](https://github.com/dotnet/efcore/pull/30632) ## Builds to use - The [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md) are the most up-to-date available. - The daily builds now contain all issues merged for 7.0.x patch releases, as well as new code to be released in EF8 previews. - The daily builds work on both .NET 6 and .NET 7. - Preview: [EF Core 8 Preview 3](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.3.23174.2) - Preview releases lag behind the daily build. We recommend using the daily builds whenever possible. - Current: [EF Core 7.0.5](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.5) - LTS: [EF Core 6.0.16](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.16) ## Releases See [GitHub Releases](https://github.com/dotnet/efcore/releases) and [EF Core releases and planning (Roadmap)](https://docs.microsoft.com/ef/core/what-is-new/) in our documentation for full details. ## Weekly/biweekly updates from previous years * [2022](https://github.com/dotnet/efcore/issues/27185) * [2021](https://github.com/dotnet/efcore/issues/23884) * [2020](https://github.com/dotnet/efcore/issues/19549) * [2019](https://github.com/dotnet/efcore/issues/15403) ## Feedback Comments are disabled on this issue to reduce noise. Please use [the related discussion issue](https://github.com/dotnet/efcore/issues/15404) for any comments on these status updates.

ajcvickers commented 1 year ago

April 27, 2023

Expand to see status from this week...

## Highlights Several features merged this week ready for EF8/.NET 8 preview 4: - `Contains` queries are now parameterized in a way that doesn't pollute the database query cache. ([#13617](https://github.com/dotnet/efcore/issues/13617)) - Collections of primitive values can be mapped and queried in JSON documents. ([#29427](https://github.com/dotnet/efcore/pull/29427)) - Primitive collections can be used in many other LINQ queries. ([#30426](https://github.com/dotnet/efcore/issues/30426)) - Microsoft.Data.Sqlite can now be trimmed for AOT with no warnings. ([#29725](https://github.com/dotnet/efcore/issues/29725)) For example, this LINQ query using `Contains`: ```C# var ids = new[] { 7, 27, 345, 2, 90, 567 }; var users = await context.Users.Where(u => ids.Contains(u.Id)).ToListAsync(); ``` is now translated to the following SQL on recent versions of SQL Server: ```sql SELECT [u].[Id], [u].[Name] FROM [Users] AS [u] WHERE EXISTS ( SELECT 1 FROM OpenJson(@__ids_0) AS [i] WHERE CAST([i].[value] AS int) = [u].[Id]) ``` Where the parameter `@__ids_0` is `[7,27,345,2,90,567]`. ## Community Standup: EF Core Internals – Model Building In the [latest .NET Data Community Standup](https://www.youtube.com/live/FYz0rAxQkC8?feature=share), the .NET Data Access team digs into the EF Core internals for building a model. EF models are built using a combination of three mechanisms: conventions, mapping attributes, and the model builder API. We explain each of these mechanisms and show how they interact. We also cover how models are cached, and ways in which that caching can be controlled. And, as always, we answered your questions live! You can [watch all .NET Data Community Standups on YouTube](https://aka.ms/efstandups). We live-stream every other Wednesday to Twitch, YouTube, and Twitter. [Comment on GitHub](https://github.com/dotnet/efcore/issues/22700) with ideas for guests, demos, or anything else you want to see. ## EF Core 8 (EF8) EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023. The [EF Core 8 Plan](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan) is available publicly in our documentation. As always, [feedback is greatly appreciated](https://github.com/dotnet/efcore/issues/29853). 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 8 is linked in the table below together with its current high-level status. | EF Core 8 Theme | Feature | Status | |:--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| | Highly requested features | [JSON columns](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#json-columns) | In-progress | | | • [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) | Complete | | | • [Support for JSON columns in SQLite](https://github.com/dotnet/efcore/issues/28816) | Complete | | | • [Support JSON columns in compiled models](https://github.com/dotnet/efcore/pull/30254) | Complete | | | • [Map collections of primitive types to JSON column in relational database](https://github.com/dotnet/efcore/issues/29427) | Complete | | | • [Optimize update path for single property element](https://github.com/dotnet/efcore/pull/30410) | Complete | | | • [Use -> and ->> in SQLite instead of json_extract](https://github.com/dotnet/efcore/pull/30334) | Complete | | | [Value objects](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#value-objects) | In-progress | | | [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) | Complete | | | [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) | Complete | | | [Support SQL Server HierarchyID in EF Core](https://github.com/dotnet/efcore/issues/24507) | Complete | | Cloud native and devices | [AOT and trimming with EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-with-ef-core) | In-progress | | | [AOT and trimming for ADO.NET](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-for-adonet) | In-progress | | | • [NativeAOT/trimming compatibility for Microsoft.Data.Sqlite](https://github.com/dotnet/efcore/issues/29725) | Complete | | Performance | [Woodstar](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#woodstar) | In-progress | | | [Contains translated to parameterized IN queries](https://github.com/dotnet/efcore/issues/13617) | Complete | | Visual Tooling | [First-class T4 templates in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#first-class-t4-templates-in-visual-studio) | Planned | | | [EF Core Database First in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#ef-core-database-first-in-visual-studio) | In-progress | | Developer experience | [Developer experience](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#theme-developer-experience) | In-progress | | | • [Support querying over primitive collections](https://github.com/dotnet/efcore/pull/30426) | Complete | | | • [Remove unneeded parentheses in SQL queries](https://github.com/dotnet/efcore/issues/26767) | Complete | | | • [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) | Complete | | | • [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) | Complete | | | • [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) | Complete | | | • [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) | Complete | | | • [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) | Complete | | | • [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) | Complete | | | • [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) | Complete | | | • [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) | Complete | | | • [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) | Complete | | | • [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) | Complete | | | • [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) | Complete | | | • [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) | Complete | | | • [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) | Complete | | | • [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) | Complete | | | • [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) | Complete | | | • [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) | Complete | ## Burndown for EF8 This is the burndown chart the team uses internally to track progress on EF Core 8. EF8 Burndown - The upper chart shows work committed for EF8 - The lower chart shows work completed for EF8 - On each chart: - Enhancements are in green and are shown at the bottom - Bugs are in red and are stacked in the middle - Other issues are in blue and stacked at the top ## EF Core 8 Preview 3 EF Core 8 (EF8) Preview 3 is [available from NuGet](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.3.23174.2) Preview 3 contains the following new features: - [Optimize update path for single property JSON element](https://github.com/dotnet/efcore/issues/30410) - [JSON columns can be used in compiled models](https://github.com/dotnet/efcore/issues/29602) - [Unneeded parentheses removed in SQL queries ](https://github.com/dotnet/efcore/issues/26767) - [Set operations are supported over non-entity projections with different facets](https://github.com/dotnet/efcore/issues/19129) In addition, Preview 2 contains the following features from Previews 1 and 2: - [Json: add support for Sqlite provider](https://github.com/dotnet/efcore/issues/28816) - [SQL Server: Support hierarchyid](https://github.com/dotnet/efcore/issues/365) - [Configuration to opt out of occasionally problematic SaveChanges optimizations](https://github.com/dotnet/efcore/issues/29916) - [Add convention types for triggers](https://github.com/dotnet/efcore/issues/28687) - [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) - [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) - [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) - [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) - [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) - [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) - [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) - [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) - [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) - [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) - [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) - [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) - [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) - [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) - [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) - [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) - [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) - [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) - [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) See GitHub for all issues resolved in [Preview 1](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview1+is%3Aclosed), [Preview 2](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview2+is%3Aclosed), and [Preview 3](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview3+is%3Aclosed). ## EF Core 7.0.5 EF Core 7.0.5 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.5). This is a patch release of EF Core 7 containing only [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.5+is%3Aclosed): - [Can't add migration renaming a column on TPC root](https://github.com/dotnet/efcore/issues/30321) - [Scaffolded collection navigation properties do not have setters](https://github.com/dotnet/efcore/issues/30286) - [EF7 generating incorrect SQL for the Concat/Union All](https://github.com/dotnet/efcore/issues/30273) - [Added nullable property to Json mapped model resulting in errors instead of mapping non existing json property to null](https://github.com/dotnet/efcore/issues/30028) ## EF Core 6.0.16 EF Core 6.0.16 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.16). This is a patch release of EF Core 6 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.15. ## Pull requests merged since the last update ### Community contributions - @NKnusperer: [Make SequentialGuidValueGenerator non-allocating](https://github.com/dotnet/efcore/pull/30649) - @stevendarby: [Allow changing an open connection if it's not owned](https://github.com/dotnet/efcore/pull/30706) - @stevendarby: [Allow DI for pooled DbContexts](https://github.com/dotnet/efcore/pull/30739) - @OsamaAbuSitta: [Add Generic version of EntityTypeConfiguration Attribute](https://github.com/dotnet/efcore/pull/30653) - @DoctorKrolic: [Refactor internal usage analyzer](https://github.com/dotnet/efcore/pull/30767) - @aeri: [fix: typo in Optional one-to-one](https://github.com/dotnet/EntityFramework.Docs/pull/4325) - @eluchsinger: [Complete the sample with the typed discriminator mapping](https://github.com/dotnet/EntityFramework.Docs/pull/4322) Many thanks to all our contributors! ### EF Core - Query - [Fix for converter from bool used in predicate without comparison fails on sqlite (and other non-sql server backends?)](https://github.com/dotnet/efcore/pull/30666) - [Fix for GroupBy generates invalid SQL when using custom database function](https://github.com/dotnet/efcore/pull/30617) - [Stop pushing down to subquery for non-Concat set operations without limit/offset](https://github.com/dotnet/efcore/pull/30685) - [Tiny cleanup of CloningExpressionVisitor](https://github.com/dotnet/efcore/pull/30700) - [Support primitive collections](https://github.com/dotnet/efcore/pull/30738) - [Add some VB.NET tests](https://github.com/dotnet/efcore/pull/30762) - [Fix for multiple LeftJoins (GroupJoins) lead to GroupJoin Exception when the same where is used twice](https://github.com/dotnet/efcore/pull/30594) - JSON - [Use -> operator for SQLite JsonScalarExpression](https://github.com/dotnet/efcore/pull/30745) - [Remove leading $ from JSON expressions](https://github.com/dotnet/efcore/pull/30763) - Documentation - [Include closing brace in partial repository code](https://github.com/dotnet/EntityFramework.Docs/pull/4327) - [Fix typo](https://github.com/dotnet/EntityFramework.Docs/pull/4330) ### Microsoft.Data.Sqlite - [Fix trimming warnings in Microsoft.Data.Sqlite](https://github.com/dotnet/efcore/pull/30728) ## Builds to use - The [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md) are the most up-to-date available. - The daily builds now contain all issues merged for 7.0.x patch releases, as well as new code to be released in EF8 previews. - The daily builds work on both .NET 6 and .NET 7. - Preview: [EF Core 8 Preview 3](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.3.23174.2) - Preview releases lag behind the daily build. We recommend using the daily builds whenever possible. - Current: [EF Core 7.0.5](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.5) - LTS: [EF Core 6.0.16](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.16) ## Releases See [GitHub Releases](https://github.com/dotnet/efcore/releases) and [EF Core releases and planning (Roadmap)](https://docs.microsoft.com/ef/core/what-is-new/) in our documentation for full details. ## Weekly/biweekly updates from previous years * [2022](https://github.com/dotnet/efcore/issues/27185) * [2021](https://github.com/dotnet/efcore/issues/23884) * [2020](https://github.com/dotnet/efcore/issues/19549) * [2019](https://github.com/dotnet/efcore/issues/15403) ## Feedback Comments are disabled on this issue to reduce noise. Please use [the related discussion issue](https://github.com/dotnet/efcore/issues/15404) for any comments on these status updates.

ajcvickers commented 1 year ago

May 11, 2023

Expand to see status from this week...

## Highlights Merged this week: [massively improved data type detection when scaffolding a DbContext and entity types from a SQLite database](https://github.com/dotnet/efcore/pull/30816). SQLite databases have very limited (and strange) support for the type of data stored in a column. In addition to using column metadata, EF Core now samples data in the column to determine which .NET type to use. This means columns with date/time types, GUIDs, booleans, etc. are correctly detected and entity types are scaffolded with appropriate property types. ## Community Standup: Azure SQL Database and SQL Server 2022 - What’s new for developers In the [latest .NET Data Community Standup](https://www.youtube.com/watch?v=jSDy2bCHHkc), Silvano Coriani joins the .NET Data Access team to discuss some of the new capabilities introduced on both SQL Server and our Azure services that have an impact on app development. This includes: - T-SQL and IQP enhancements - Local Development Experience - JSON enhancements You can [watch all .NET Data Community Standups on YouTube](https://aka.ms/efstandups). We live-stream every other Wednesday to Twitch, YouTube, and Twitter. [Comment on GitHub](https://github.com/dotnet/efcore/issues/22700) with ideas for guests, demos, or anything else you want to see. ## EF Core 8 (EF8) EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023. The [EF Core 8 Plan](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan) is available publicly in our documentation. As always, [feedback is greatly appreciated](https://github.com/dotnet/efcore/issues/29853). 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 8 is linked in the table below together with its current high-level status. | EF Core 8 Theme | Feature | Status | |:--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| | Highly requested features | [JSON columns](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#json-columns) | In-progress | | | • [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) | Complete | | | • [Support for JSON columns in SQLite](https://github.com/dotnet/efcore/issues/28816) | Complete | | | • [Support JSON columns in compiled models](https://github.com/dotnet/efcore/pull/30254) | Complete | | | • [Map collections of primitive types to JSON column in relational database](https://github.com/dotnet/efcore/pull/29427) | Complete | | | • [Map collections of primitive types to JSON column in relational database](https://github.com/dotnet/efcore/issues/29427) | Complete | | | • [Optimize update path for single property element](https://github.com/dotnet/efcore/pull/30410) | Complete | | | • [Use -> and ->> in SQLite instead of json_extract](https://github.com/dotnet/efcore/pull/30334) | Complete | | | [Value objects](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#value-objects) | In-progress | | | [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) | Complete | | | [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) | Complete | | | [Support SQL Server HierarchyID in EF Core](https://github.com/dotnet/efcore/issues/24507) | Complete | | Cloud native and devices | [AOT and trimming with EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-with-ef-core) | In-progress | | | [AOT and trimming for ADO.NET](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-for-adonet) | In-progress | | | • [NativeAOT/trimming compatibility for Microsoft.Data.Sqlite](https://github.com/dotnet/efcore/issues/29725) | Complete | | Performance | [Woodstar](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#woodstar) | In-progress | | | [Contains translated to parameterized IN queries](https://github.com/dotnet/efcore/issues/13617) | Complete | | Visual Tooling | [First-class T4 templates in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#first-class-t4-templates-in-visual-studio) | Planned | | | [EF Core Database First in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#ef-core-database-first-in-visual-studio) | In-progress | | Developer experience | [Developer experience](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#theme-developer-experience) | In-progress | | | • [Support querying over primitive collections](https://github.com/dotnet/efcore/pull/30426) | Complete | | | • [Remove unneeded parentheses in SQL queries](https://github.com/dotnet/efcore/issues/26767) | Complete | | | • [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) | Complete | | | • [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) | Complete | | | • [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) | Complete | | | • [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) | Complete | | | • [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) | Complete | | | • [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) | Complete | | | • [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) | Complete | | | • [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) | Complete | | | • [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) | Complete | | | • [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) | Complete | | | • [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) | Complete | | | • [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) | Complete | | | • [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) | Complete | | | • [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) | Complete | | | • [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) | Complete | | | • [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) | Complete | ## Burndown for EF8 This is the burndown chart the team uses internally to track progress on EF Core 8. EF8 Burndown - The upper chart shows work committed for EF8 - The lower chart shows work completed for EF8 - On each chart: - Enhancements are in green and are shown at the bottom - Bugs are in red and are stacked in the middle - Other issues are in blue and stacked at the top ## EF Core 8 Preview 3 EF Core 8 (EF8) Preview 3 is [available from NuGet](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.3.23174.2) Preview 3 contains the following new features: - [Optimize update path for single property JSON element](https://github.com/dotnet/efcore/issues/30410) - [JSON columns can be used in compiled models](https://github.com/dotnet/efcore/issues/29602) - [Unneeded parentheses removed in SQL queries ](https://github.com/dotnet/efcore/issues/26767) - [Set operations are supported over non-entity projections with different facets](https://github.com/dotnet/efcore/issues/19129) In addition, Preview 2 contains the following features from Previews 1 and 2: - [Json: add support for Sqlite provider](https://github.com/dotnet/efcore/issues/28816) - [SQL Server: Support hierarchyid](https://github.com/dotnet/efcore/issues/365) - [Configuration to opt out of occasionally problematic SaveChanges optimizations](https://github.com/dotnet/efcore/issues/29916) - [Add convention types for triggers](https://github.com/dotnet/efcore/issues/28687) - [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) - [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) - [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) - [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) - [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) - [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) - [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) - [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) - [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) - [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) - [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) - [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) - [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) - [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) - [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) - [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) - [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) - [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) - [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) See GitHub for all issues resolved in [Preview 1](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview1+is%3Aclosed), [Preview 2](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview2+is%3Aclosed), and [Preview 3](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview3+is%3Aclosed). ## EF Core 7.0.5 EF Core 7.0.5 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.5). This is a patch release of EF Core 7 containing only [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.5+is%3Aclosed): - [Can't add migration renaming a column on TPC root](https://github.com/dotnet/efcore/issues/30321) - [Scaffolded collection navigation properties do not have setters](https://github.com/dotnet/efcore/issues/30286) - [EF7 generating incorrect SQL for the Concat/Union All](https://github.com/dotnet/efcore/issues/30273) - [Added nullable property to Json mapped model resulting in errors instead of mapping non existing json property to null](https://github.com/dotnet/efcore/issues/30028) ## EF Core 6.0.16 EF Core 6.0.16 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.16). This is a patch release of EF Core 6 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.15. ## Pull requests merged since the last update ### Community contributions - @DoctorKrolic: [Refactor analyzers' test infrastructure](https://github.com/dotnet/efcore/pull/30814) - @ofthelit: [Update many-to-many.md](https://github.com/dotnet/EntityFramework.Docs/pull/4334) Many thanks to all our contributors! ### EF Core - Query - (Preview 4) [Support primitive collections](https://github.com/dotnet/efcore/pull/30777) - [Use JsonScalarExpression for primitive collection indexing](https://github.com/dotnet/efcore/pull/30769) - [Improve collection indexer normalization](https://github.com/dotnet/efcore/pull/30780) - (7.0.7) [Fix multiple LeftJoins (GroupJoins) lead to GroupJoin Exception when the same where is used twice](https://github.com/dotnet/efcore/pull/30794) - (7.0.7) [fixing a typo in quirk string for issue 30330](https://github.com/dotnet/efcore/pull/30784) - (7.0.7) [Re-introduce quirk with typo](https://github.com/dotnet/efcore/pull/30825) - [Disable VB tests](https://github.com/dotnet/efcore/pull/30821) - Documentation - [Documentation on ExecuteUpdate/Delete](https://github.com/dotnet/EntityFramework.Docs/pull/4337) - [Rearrange and reshuffle data documentation hub](https://github.com/dotnet/EntityFramework.Docs/pull/4283) - [Add new ExecuteUpdate/Delete page to TOC](https://github.com/dotnet/EntityFramework.Docs/pull/4341) - Dependencies - [Bump Microsoft.Azure.Cosmos from 3.32.3 to 3.33.0](https://github.com/dotnet/efcore/pull/30804) - (7.0.7) [Bump SqlClient to 5.0.2 due to bad memory bug in 5.0.1](https://github.com/dotnet/efcore/pull/30828) - [Bump Microsoft.AspNetCore.OData from 8.1.1 to 8.1.2](https://github.com/dotnet/efcore/pull/30848) - Model building - [ModelBuilder API for sentinels](https://github.com/dotnet/efcore/pull/30809) - [Handle enum literals that are not a defined value of the enum](https://github.com/dotnet/efcore/pull/30852) - Change tracking - [Allow configuration of the sentinel value that indicates a property has not been set](https://github.com/dotnet/efcore/pull/30760) - [Update handling for bools and enums with database defaults](https://github.com/dotnet/efcore/pull/30843) - Scaffolding - [SQLite Scaffolding: Use column type and values to provide a better CLR type](https://github.com/dotnet/efcore/pull/30816) ## Builds to use - The [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md) are the most up-to-date available. - The daily builds now contain all issues merged for 7.0.x patch releases, as well as new code to be released in EF8 previews. - The daily builds work on both .NET 6 and .NET 7. - Preview: [EF Core 8 Preview 3](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.3.23174.2) - Preview releases lag behind the daily build. We recommend using the daily builds whenever possible. - Current: [EF Core 7.0.5](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.5) - LTS: [EF Core 6.0.16](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.16) ## Releases See [GitHub Releases](https://github.com/dotnet/efcore/releases) and [EF Core releases and planning (Roadmap)](https://docs.microsoft.com/ef/core/what-is-new/) in our documentation for full details. ## Weekly/biweekly updates from previous years * [2022](https://github.com/dotnet/efcore/issues/27185) * [2021](https://github.com/dotnet/efcore/issues/23884) * [2020](https://github.com/dotnet/efcore/issues/19549) * [2019](https://github.com/dotnet/efcore/issues/15403) ## Feedback Comments are disabled on this issue to reduce noise. Please use [the related discussion issue](https://github.com/dotnet/efcore/issues/15404) for any comments on these status updates.

ajcvickers commented 1 year ago

May 25, 2023

Expand to see status from this week...

## Highlights EF Core 8 Preview 4 is [on NuGet now!](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.4.23259.3) - Blog post: [Primitive collections and improved Contains](https://devblogs.microsoft.com/dotnet/announcing-ef8-preview-4/) - Detailed "What's New" documentation, including runnable samples: [aka.ms/ef8-new](https://aka.ms/ef8-new) Here's an example of a query that can now be translated using the new support for primitive collections. This query will tell us how common it is for a dog walk to coincide with a visit to the nearest pub: LINQ query using primitive collections Which translates to the following on SQL Server: SQL query using primitive collections See the [What's New documentation](https://aka.ms/ef8-new) and [blog post](https://devblogs.microsoft.com/dotnet/announcing-ef8-preview-4/) for more examples. ## Community Standup: Collections of primitive values in EF Core In the [latest .NET Data Community Standup](https://www.youtube.com/live/AUS2OZjsA2I?feature=share), the .NET Data Access team dive into new support for collections of primitive values, just released in EF Core 8 Preview 4. Collections of a primitive type can now be used as properties of an entity type and will be mapped to a JSON column in the relational database. In addition, parameters of primitive values can be passed to the database. In either case, the native JSON processing capabilities of the database are then used to exact and manipulate the primitive values, just as if they were in a table. This opens up powerful query possibilities, as well as optimizations to common problems such as translating queries that use Contains. You can [watch all .NET Data Community Standups on YouTube](https://aka.ms/efstandups). We live-stream every other Wednesday to Twitch, YouTube, and Twitter. [Comment on GitHub](https://github.com/dotnet/efcore/issues/22700) with ideas for guests, demos, or anything else you want to see. ## EF Core 8 (EF8) EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023. The [EF Core 8 Plan](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan) is available publicly in our documentation. As always, [feedback is greatly appreciated](https://github.com/dotnet/efcore/issues/29853). 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 8 is linked in the table below together with its current high-level status. | EF Core 8 Theme | Feature | Status | |:--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| | Highly requested features | [JSON columns](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#json-columns) | In-progress | | | • [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) | Complete | | | • [Support for JSON columns in SQLite](https://github.com/dotnet/efcore/issues/28816) | Complete | | | • [Support JSON columns in compiled models](https://github.com/dotnet/efcore/pull/30254) | Complete | | | • [Map collections of primitive types to JSON column in relational database](https://github.com/dotnet/efcore/pull/29427) | Complete | | | • [Map collections of primitive types to JSON column in relational database](https://github.com/dotnet/efcore/issues/29427) | Complete | | | • [Optimize update path for single property element](https://github.com/dotnet/efcore/pull/30410) | Complete | | | • [Use -> and ->> in SQLite instead of json_extract](https://github.com/dotnet/efcore/pull/30334) | Complete | | | [Value objects](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#value-objects) | In-progress | | | [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) | Complete | | | [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) | Complete | | | [Support SQL Server HierarchyID in EF Core](https://github.com/dotnet/efcore/issues/24507) | Complete | | Cloud native and devices | [AOT and trimming with EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-with-ef-core) | In-progress | | | [AOT and trimming for ADO.NET](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-for-adonet) | In-progress | | | • [NativeAOT/trimming compatibility for Microsoft.Data.Sqlite](https://github.com/dotnet/efcore/issues/29725) | Complete | | Performance | [Woodstar](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#woodstar) | In-progress | | | [Contains translated to parameterized IN queries](https://github.com/dotnet/efcore/issues/13617) | Complete | | Visual Tooling | [First-class T4 templates in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#first-class-t4-templates-in-visual-studio) | Planned | | | [EF Core Database First in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#ef-core-database-first-in-visual-studio) | In-progress | | Developer experience | [Developer experience](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#theme-developer-experience) | In-progress | | | • [Support querying over primitive collections](https://github.com/dotnet/efcore/pull/30426) | Complete | | | • [Remove unneeded parentheses in SQL queries](https://github.com/dotnet/efcore/issues/26767) | Complete | | | • [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) | Complete | | | • [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) | Complete | | | • [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) | Complete | | | • [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) | Complete | | | • [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) | Complete | | | • [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) | Complete | | | • [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) | Complete | | | • [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) | Complete | | | • [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) | Complete | | | • [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) | Complete | | | • [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) | Complete | | | • [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) | Complete | | | • [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) | Complete | | | • [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) | Complete | | | • [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) | Complete | | | • [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) | Complete | ## Burndown for EF8 This is the burndown chart the team uses internally to track progress on EF Core 8. EF8 Burndown - The upper chart shows work committed for EF8 - The lower chart shows work completed for EF8 - On each chart: - Enhancements are in green and are shown at the bottom - Bugs are in red and are stacked in the middle - Other issues are in blue and stacked at the top ## EF Core 8 Preview 4 EF Core 8 (EF8) Preview 4 is [available from NuGet](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.4.23259.3) Preview 4 contains the following new features: - [IN() list queries are not parameterized, causing increased SQL Server CPU usage](https://github.com/dotnet/efcore/issues/13617) - [Allow 'unsharing' connection between contexts](https://github.com/dotnet/efcore/issues/30704) - [Remove unneeded subquery and projection when using ordering without limit/offset in set operations](https://github.com/dotnet/efcore/issues/30684) - [Make SequentialGuidValueGenerator non-allocating](https://github.com/dotnet/efcore/issues/30610) - [Support querying over primitive collections](https://github.com/dotnet/efcore/issues/30426) - [JSON/Sqlite: use -> and ->> where possible when traversing JSON, rather than json_extract](https://github.com/dotnet/efcore/issues/30334) - [Add Generic version of EntityTypeConfiguration Attribute](https://github.com/dotnet/efcore/issues/30072) - [NativeAOT/trimming compatibility for Microsoft.Data.Sqlite](https://github.com/dotnet/efcore/issues/29725) - [Map collections of primitive types to JSON column in relational database](https://github.com/dotnet/efcore/issues/29427) - [Translate DateTimeOffset.ToUnixTime(Seconds|Milliseconds)](https://github.com/dotnet/efcore/issues/28925) - [Allow pooling DbContext with singleton services](https://github.com/dotnet/efcore/issues/27752) - [Optional RestartSequenceOperation.StartValue](https://github.com/dotnet/efcore/issues/26560) - [Generate compiled relational model](https://github.com/dotnet/efcore/issues/24896) - [Global query filters produce too many parameters](https://github.com/dotnet/efcore/issues/24476) In addition, Preview 2 contains the following features from Previews 1, 2, and 3: - [Optimize update path for single property JSON element](https://github.com/dotnet/efcore/issues/30410) - [JSON columns can be used in compiled models](https://github.com/dotnet/efcore/issues/29602) - [Unneeded parentheses removed in SQL queries ](https://github.com/dotnet/efcore/issues/26767) - [Set operations are supported over non-entity projections with different facets](https://github.com/dotnet/efcore/issues/19129) - [Json: add support for Sqlite provider](https://github.com/dotnet/efcore/issues/28816) - [SQL Server: Support hierarchyid](https://github.com/dotnet/efcore/issues/365) - [Configuration to opt out of occasionally problematic SaveChanges optimizations](https://github.com/dotnet/efcore/issues/29916) - [Add convention types for triggers](https://github.com/dotnet/efcore/issues/28687) - [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) - [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) - [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) - [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) - [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) - [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) - [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) - [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) - [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) - [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) - [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) - [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) - [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) - [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) - [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) - [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) - [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) - [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) - [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) See GitHub for all issues resolved in [Preview 1](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview1+is%3Aclosed), [Preview 2](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview2+is%3Aclosed), [Preview 3](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview3+is%3Aclosed), and [Preview 4](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview4+is%3Aclosed). ## EF Core 7.0.5 EF Core 7.0.5 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.5). This is a patch release of EF Core 7 containing only [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.5+is%3Aclosed): - [Can't add migration renaming a column on TPC root](https://github.com/dotnet/efcore/issues/30321) - [Scaffolded collection navigation properties do not have setters](https://github.com/dotnet/efcore/issues/30286) - [EF7 generating incorrect SQL for the Concat/Union All](https://github.com/dotnet/efcore/issues/30273) - [Added nullable property to Json mapped model resulting in errors instead of mapping non existing json property to null](https://github.com/dotnet/efcore/issues/30028) ## EF Core 6.0.16 EF Core 6.0.16 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.16). This is a patch release of EF Core 6 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.15. ## Pull requests merged since the last update ### Community contributions - @DoctorKrolic: [Add analyzer/codefix for usage of interpolated strings in raw query methods](https://github.com/dotnet/efcore/pull/30835) - @F2: [Fixed misspelling of Friends](https://github.com/dotnet/EntityFramework.Docs/pull/4349) Many thanks to all our contributors! ### EF Core - Query - [Correct parentheses logic for SQLite JsonScalarExpression](https://github.com/dotnet/efcore/pull/30908) - [Shout it out loud! Changing OpenJson to OPENJSON.](https://github.com/dotnet/efcore/pull/30913) - [SQLite: Translate Math.Sign](https://github.com/dotnet/efcore/pull/30925) - Documentation - [add readme for nuget EF core](https://github.com/dotnet/efcore/pull/30934) - [Fix missing closing bracket](https://github.com/dotnet/EntityFramework.Docs/pull/4345) - [What's new in EF8 Preview 4](https://github.com/dotnet/EntityFramework.Docs/pull/4346) - [Fix optional navigation sample in NRT page](https://github.com/dotnet/EntityFramework.Docs/pull/4352) - [Show correct code sample for optional one-to-many](https://github.com/dotnet/EntityFramework.Docs/pull/4357) - Dependencies - [Bump Microsoft.AspNetCore.OData from 8.1.2 to 8.2.0](https://github.com/dotnet/efcore/pull/30950) - [Bump SQLitePCLRaw.core from 2.1.4 to 2.1.5](https://github.com/dotnet/efcore/pull/30953) - Model building - [Add tests to ensure sentinels for flags enums are code-genned correctly](https://github.com/dotnet/efcore/pull/30924) - Type mapping - [Better detection of string store types on primitive collections](https://github.com/dotnet/efcore/pull/30920) - [Allow value comparers for supertypes of the mapping's type](https://github.com/dotnet/efcore/pull/30939) - Change tracking - [Stop skipping shadow skip navigation slots when creating the shadow values array](https://github.com/dotnet/efcore/pull/30902) - Scaffolding - [Address design meeting feedback](https://github.com/dotnet/efcore/pull/30907) ## Builds to use - The [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md) are the most up-to-date available. - The daily builds now contain all issues merged for 7.0.x patch releases, as well as new code to be released in EF8 previews. - The daily builds work on both .NET 6 and .NET 7. - Preview: [EF Core 8 Preview 4](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.4.23259.3) - Preview releases lag behind the daily build. We recommend using the daily builds whenever possible. - Current: [EF Core 7.0.5](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.5) - LTS: [EF Core 6.0.16](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.16) ## Releases See [GitHub Releases](https://github.com/dotnet/efcore/releases) and [EF Core releases and planning (Roadmap)](https://docs.microsoft.com/ef/core/what-is-new/) in our documentation for full details. ## Weekly/biweekly updates from previous years * [2022](https://github.com/dotnet/efcore/issues/27185) * [2021](https://github.com/dotnet/efcore/issues/23884) * [2020](https://github.com/dotnet/efcore/issues/19549) * [2019](https://github.com/dotnet/efcore/issues/15403) ## Feedback Comments are disabled on this issue to reduce noise. Please use [the related discussion issue](https://github.com/dotnet/efcore/issues/15404) for any comments on these status updates.

ajcvickers commented 1 year ago

June 22, 2023

Expand to see status from this week...

## Highlights EF Core 8 Preview 5 is [on NuGet now!](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.5.23280.1) Preview 5 contains the following new features: - [SQLite RevEng: Sample data to determine CLR type](https://github.com/dotnet/efcore/issues/8824) - [Allow default value check in value generation to be customized](https://github.com/dotnet/efcore/issues/701) - [Update handling of non-nullable store-generated properties](https://github.com/dotnet/efcore/issues/15070) ## Community Standup: Synchronizing data between the cloud and the client In the [latest .NET Data Community Standup](https://www.youtube.com/live/QTvFiiST-r4?feature=share), we talke to Erik Sink about a solution for keeping a synchronized copy of the DB (using SQLite) on the client, rather than asking data for the cloud every time. This is helpful for mobile scenarios where the connectivity may be poor, but the "rep and sync" approach can reduce the time the user spends waiting on the network. Local writes are fast, sync happens in the background. We explore how this is done efficiently, how to deal with conflict resolution, and other data sync-related concerns. ## Community Standup: New CLI edition of EF Core Power Tools In a [recent .NET Data Community Standup](https://www.youtube.com/live/vGvBAoP3nVY?feature=share), ErikEJ demonstrates the new CLI edition of EF Core Power Tools and shows how he used a number of community NuGet packages to improve the user experience when creating a CLI tool. You can [watch all .NET Data Community Standups on YouTube](https://aka.ms/efstandups). We live-stream every other Wednesday to Twitch, YouTube, and Twitter. [Comment on GitHub](https://github.com/dotnet/efcore/issues/22700) with ideas for guests, demos, or anything else you want to see. ## EF Core 8 (EF8) EF Core 8 (EF8) will be the next release after EF Core 7.0. It will be released alongside .NET 8 in November 2023. The [EF Core 8 Plan](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan) is available publicly in our documentation. As always, [feedback is greatly appreciated](https://github.com/dotnet/efcore/issues/29853). 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 8 is linked in the table below together with its current high-level status. | EF Core 8 Theme | Feature | Status | |:--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| | Highly requested features | [JSON columns](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#json-columns) | In-progress | | | • [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) | Complete | | | • [Support for JSON columns in SQLite](https://github.com/dotnet/efcore/issues/28816) | Complete | | | • [Support JSON columns in compiled models](https://github.com/dotnet/efcore/pull/30254) | Complete | | | • [Map collections of primitive types to JSON column in relational database](https://github.com/dotnet/efcore/pull/29427) | Complete | | | • [Map collections of primitive types to JSON column in relational database](https://github.com/dotnet/efcore/issues/29427) | Complete | | | • [Optimize update path for single property element](https://github.com/dotnet/efcore/pull/30410) | Complete | | | • [Use -> and ->> in SQLite instead of json_extract](https://github.com/dotnet/efcore/pull/30334) | Complete | | | [Value objects](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#value-objects) | In-progress | | | [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) | Complete | | | [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) | Complete | | | [Support SQL Server HierarchyID in EF Core](https://github.com/dotnet/efcore/issues/24507) | Complete | | Cloud native and devices | [AOT and trimming with EF Core](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-with-ef-core) | In-progress | | | [AOT and trimming for ADO.NET](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#aot-and-trimming-for-adonet) | In-progress | | | • [NativeAOT/trimming compatibility for Microsoft.Data.Sqlite](https://github.com/dotnet/efcore/issues/29725) | Complete | | Performance | [Woodstar](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#woodstar) | In-progress | | | [Contains translated to parameterized IN queries](https://github.com/dotnet/efcore/issues/13617) | Complete | | Visual Tooling | [First-class T4 templates in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#first-class-t4-templates-in-visual-studio) | Planned | | | [EF Core Database First in Visual Studio](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#ef-core-database-first-in-visual-studio) | In-progress | | Developer experience | [Developer experience](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#theme-developer-experience) | In-progress | | | • [Support querying over primitive collections](https://github.com/dotnet/efcore/pull/30426) | Complete | | | • [Remove unneeded parentheses in SQL queries](https://github.com/dotnet/efcore/issues/26767) | Complete | | | • [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) | Complete | | | • [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) | Complete | | | • [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) | Complete | | | • [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) | Complete | | | • [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) | Complete | | | • [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) | Complete | | | • [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) | Complete | | | • [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) | Complete | | | • [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) | Complete | | | • [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) | Complete | | | • [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) | Complete | | | • [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) | Complete | | | • [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) | Complete | | | • [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) | Complete | | | • [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) | Complete | | | • [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) | Complete | ## Burndown for EF8 This is the burndown chart the team uses internally to track progress on EF Core 8. EF8 Burndown - The upper chart shows work committed for EF8 - The lower chart shows work completed for EF8 - On each chart: - Enhancements are in green and are shown at the bottom - Bugs are in red and are stacked in the middle - Other issues are in blue and stacked at the top ## EF Core 8 Preview 5 EF Core 8 (EF8) Preview 5 is [available from NuGet](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.5.23280.1) Preview 5 contains the following new features: - [SQLite RevEng: Sample data to determine CLR type](https://github.com/dotnet/efcore/issues/8824) - [Allow default value check in value generation to be customized](https://github.com/dotnet/efcore/issues/701) - [Update handling of non-nullable store-generated properties](https://github.com/dotnet/efcore/issues/15070) In addition, Preview 2 contains the following features from Previews 1, 2, 3, and 4: - [IN() list queries are not parameterized, causing increased SQL Server CPU usage](https://github.com/dotnet/efcore/issues/13617) - [Allow 'unsharing' connection between contexts](https://github.com/dotnet/efcore/issues/30704) - [Remove unneeded subquery and projection when using ordering without limit/offset in set operations](https://github.com/dotnet/efcore/issues/30684) - [Make SequentialGuidValueGenerator non-allocating](https://github.com/dotnet/efcore/issues/30610) - [Support querying over primitive collections](https://github.com/dotnet/efcore/issues/30426) - [JSON/Sqlite: use -> and ->> where possible when traversing JSON, rather than json_extract](https://github.com/dotnet/efcore/issues/30334) - [Add Generic version of EntityTypeConfiguration Attribute](https://github.com/dotnet/efcore/issues/30072) - [NativeAOT/trimming compatibility for Microsoft.Data.Sqlite](https://github.com/dotnet/efcore/issues/29725) - [Map collections of primitive types to JSON column in relational database](https://github.com/dotnet/efcore/issues/29427) - [Translate DateTimeOffset.ToUnixTime(Seconds|Milliseconds)](https://github.com/dotnet/efcore/issues/28925) - [Allow pooling DbContext with singleton services](https://github.com/dotnet/efcore/issues/27752) - [Optional RestartSequenceOperation.StartValue](https://github.com/dotnet/efcore/issues/26560) - [Generate compiled relational model](https://github.com/dotnet/efcore/issues/24896) - [Global query filters produce too many parameters](https://github.com/dotnet/efcore/issues/24476) - [Optimize update path for single property JSON element](https://github.com/dotnet/efcore/issues/30410) - [JSON columns can be used in compiled models](https://github.com/dotnet/efcore/issues/29602) - [Unneeded parentheses removed in SQL queries ](https://github.com/dotnet/efcore/issues/26767) - [Set operations are supported over non-entity projections with different facets](https://github.com/dotnet/efcore/issues/19129) - [Json: add support for Sqlite provider](https://github.com/dotnet/efcore/issues/28816) - [SQL Server: Support hierarchyid](https://github.com/dotnet/efcore/issues/365) - [Configuration to opt out of occasionally problematic SaveChanges optimizations](https://github.com/dotnet/efcore/issues/29916) - [Add convention types for triggers](https://github.com/dotnet/efcore/issues/28687) - [Translate element access of a JSON array](https://github.com/dotnet/efcore/issues/28648) - [Raw SQL queries for unmapped types](https://learn.microsoft.com/ef/core/what-is-new/ef-core-8.0/plan#sql-queries-for-unmapped-types) - [Support the new BCL DateOnly and TimeOnly structs for SQL Server](https://github.com/dotnet/efcore/issues/24507) - [Translate ElementAt(OrDefault)](https://github.com/dotnet/efcore/issues/17066) - [Opt-out of lazy-loading for specific navigations](https://github.com/dotnet/efcore/issues/10787) - [Lazy-loading for no-tracking queries](https://github.com/dotnet/efcore/issues/10042) - [Reverse engineer Synapse and Dynamics 365 TDS](https://github.com/dotnet/efcore/issues/29121) - [Set MaxLength on TPH discriminator property by convention](https://github.com/dotnet/efcore/issues/10691) - [Translate ToString() on a string column](https://github.com/dotnet/efcore/issues/20839) - [Generic overload of ConventionSetBuilder.Remove](https://github.com/dotnet/efcore/issues/29476) - [Lookup tracked entities by primary key, alternate key, or foreign key](https://github.com/dotnet/efcore/issues/29685) - [Allow UseSequence and HiLo on non-key properties](https://github.com/dotnet/efcore/issues/29758) - [Pass query tracking behavior to materialization interceptor](https://github.com/dotnet/efcore/issues/29910) - [Use case-insensitive string key comparisons on SQL Server](https://github.com/dotnet/efcore/issues/27526) - [Allow value converters to change the DbType](https://github.com/dotnet/efcore/issues/24771) - [Resolve application services in EF services](https://github.com/dotnet/efcore/issues/13540) - [Numeric rowersion properties automatically convert to binary](https://github.com/dotnet/efcore/issues/12434) - [Allow transfer of ownership of DbConnection from application to DbContext](https://github.com/dotnet/efcore/issues/24199) - [Provide more information when 'No DbContext was found' error is generated](https://github.com/dotnet/efcore/issues/18715) See GitHub for all issues resolved in [Preview 1](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview1+is%3Aclosed), [Preview 2](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview2+is%3Aclosed), [Preview 3](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview3+is%3Aclosed), [Preview 4](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview4+is%3Aclosed), and [Preview 5](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A8.0.0-preview5+is%3Aclosed). ## EF Core 7.0.8 EF Core 7.0.8 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.8). This is a [patch release of EF Core 7.0](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.8) containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 7.0.7. EF Core 7.0.7 was also release since the last new update. It contains the following [important bug fixes](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A7.0.7+is%3Aclosed): - [IndexOutOfRangeException in CreateNavigationExpansionExpression](https://github.com/dotnet/efcore/issues/30115) - [Linq select cannot project an entity containing both Json columns and ICollections](https://github.com/dotnet/efcore/issues/30266) - [Json: updating property with conversion from string to other type fails on sql server](https://github.com/dotnet/efcore/issues/30330) - [Duplicate table alias in generated select query (An item with the same key has already been added)](https://github.com/dotnet/efcore/issues/30358) - [InvalidOperationException when calling ExecuteUpdate with owned entity & using current value](https://github.com/dotnet/efcore/issues/30528) - [Query/Json: projecting entity collection along with json collection generates invalid shaper](https://github.com/dotnet/efcore/issues/30565) - [AutoInclude causes ExecuteDelete to fail](https://github.com/dotnet/efcore/issues/30572) - [Multiple LeftJoins (GroupJoins) lead to GroupJoin Exception when the same where is used twice](https://github.com/dotnet/efcore/issues/30575) - [SaveChanges circular dependency in unique unfiltered index (when change doesn't affect any column from unique index).](https://github.com/dotnet/efcore/issues/30601) ## EF Core 6.0.19 EF Core 6.0.19 is [available on NuGet now](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.19). This is a patch release of EF Core 6 containing only updates to dependencies. There are no additional fixes in this release beyond those already shipped in EF Core 6.0.16. ## Pull requests merged since the last update ### Community contributions - @memory-thrasher: [Fixes scaffolding on Synapse (triggers)](https://github.com/dotnet/efcore/pull/31011) - @Varorbc: [Remove implicitly dependent reference](https://github.com/dotnet/efcore/pull/31028) - @ErikEJ: [Make EngineEdition more readable](https://github.com/dotnet/efcore/pull/31038) - @beliakov-mb: [Fix navigation in UserDefinedFunction](https://github.com/dotnet/efcore/pull/30776) - @Propo41: [Fixed typo](https://github.com/dotnet/EntityFramework.Docs/pull/4366) - @n0099: [Update samples/core/Saving/Transactions/SharingTransaction.cs](https://github.com/dotnet/EntityFramework.Docs/pull/4358) - @jefnic23: [Update concurrency.md](https://github.com/dotnet/EntityFramework.Docs/pull/4378) - @ascott18: [Clarify interation between MARS and Savepoints](https://github.com/dotnet/EntityFramework.Docs/pull/4386) - @Suchiman: [Add EFC7 DbSet NRT suppression information](https://github.com/dotnet/EntityFramework.Docs/pull/4389) Many thanks to all our contributors! ### EF Core - Query - [Update exception message for Cosmos subquery pushdown](https://github.com/dotnet/efcore/pull/30849) - [Normalize Any to Contains instead of vice versa](https://github.com/dotnet/efcore/pull/30956) - [Translate to IN + subquery when possible instead of EXISTS](https://github.com/dotnet/efcore/pull/30976) - [Better management of negated expressions](https://github.com/dotnet/efcore/pull/31028) - [Use raw literal strings goodness](https://github.com/dotnet/efcore/pull/31031) - [Generate OPENJSON with WITH unless ordering is required](https://github.com/dotnet/efcore/pull/30983) - [Better translation of predicate-less Any over JSON](https://github.com/dotnet/efcore/pull/31066) - [Introduce Visit for `IReadOnlyList`](https://github.com/dotnet/efcore/pull/31065) - [Support any expression type inside inline primitive collections](https://github.com/dotnet/efcore/pull/31046) - [Uncomment test output helpers everywhere](https://github.com/dotnet/efcore/pull/31017) - [Partial fix to type mapping inference for primitive collections](https://github.com/dotnet/efcore/pull/31110) - Documentation - [Fix typo](https://github.com/dotnet/EntityFramework.Docs/pull/4368) - [Improve docs on ambient transactions](https://github.com/dotnet/EntityFramework.Docs/pull/4360) - [Fix typo](https://github.com/dotnet/EntityFramework.Docs/pull/4372) - [Add missing slash](https://github.com/dotnet/EntityFramework.Docs/pull/4384) - Miscellaneous: - [Code cleanup & modernization](https://github.com/dotnet/efcore/pull/31077) - [Additional cleanup and modernization](https://github.com/dotnet/efcore/pull/31084) - Dependencies - [Bump Microsoft.Azure.Cosmos from 3.33.0 to 3.34.0](https://github.com/dotnet/efcore/pull/30988) - [Bump SQLitePCLRaw from 2.1.4 to 2.1.5](https://github.com/dotnet/efcore/pull/30949) - Type mapping - [Support customized reading and writing of JSON values](https://github.com/dotnet/efcore/pull/31021) - Change tracking - (7.0.8) [Stop skipping shadow skip navigation slots when creating the shadow values array](https://github.com/dotnet/efcore/pull/30911) - Scaffolding - [Parse simple default constraint literals when scaffolding](https://github.com/dotnet/efcore/pull/30927) - SQLite: - [SQLite Tests: Don't use Cache=Shared](https://github.com/dotnet/efcore/pull/31039) ## Builds to use - The [daily builds](https://github.com/dotnet/efcore/blob/main/docs/DailyBuilds.md) are the most up-to-date available. - The daily builds now contain all issues merged for 7.0.x patch releases, as well as new code to be released in EF8 previews. - The daily builds work on both .NET 6 and .NET 7. - Preview: [EF Core 8 Preview 5](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.0-preview.5.23280.1) - Preview releases lag behind the daily build. We recommend using the daily builds whenever possible. - Current: [EF Core 7.0.8](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/7.0.8) - LTS: [EF Core 6.0.19](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/6.0.19) ## Releases See [GitHub Releases](https://github.com/dotnet/efcore/releases) and [EF Core releases and planning (Roadmap)](https://docs.microsoft.com/ef/core/what-is-new/) in our documentation for full details. ## Weekly/biweekly updates from previous years * [2022](https://github.com/dotnet/efcore/issues/27185) * [2021](https://github.com/dotnet/efcore/issues/23884) * [2020](https://github.com/dotnet/efcore/issues/19549) * [2019](https://github.com/dotnet/efcore/issues/15403) ## Feedback Comments are disabled on this issue to reduce noise. Please use [the related discussion issue](https://github.com/dotnet/efcore/issues/15404) for any comments on these status updates.