Skip to content

Commit 0f12acd

Browse files
committed
Update releases/planning for EF Core 5.0
1 parent ac158a7 commit 0f12acd

File tree

4 files changed

+332
-59
lines changed

4 files changed

+332
-59
lines changed
Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
---
2+
title: Plan for Entity Framework Core 5.0
3+
author: ajcvickers
4+
ms.date: 01/14/2020
5+
uid: core/what-is-new/ef-core-5.0/plan.md
6+
---
7+
8+
# Plan for Entity Framework Core 5.0
9+
10+
As described in the [planning process](../release-planning.md), we have gathered input from stakeholders into a tentative plan for the EF Core 5.0 release.
11+
12+
> [!IMPORTANT]
13+
> This plan is still a work-in-progress. Nothing here is a commitment. This plan is a starting point that will evolve as we learn more. Some things not currently planned for 5.0 may get pulled in. Some things currently planned for 5.0 may get punted out.
14+
15+
### Version number and release date.
16+
17+
EF Core 5.0 is currently scheduled for release at [the same time as .NET 5.0](https://devblogs.microsoft.com/dotnet/introducing-net-5/). The version "5.0" was chosen to align with .NET 5.0.
18+
19+
### Supported platforms
20+
21+
EF Core 5.0 is planned to run on any .NET 5.0 platform based on the [convergence of these platforms to .NET Core](https://devblogs.microsoft.com/dotnet/introducing-net-5/). What this means in terms of .NET Standard and the actual TFM used is still TBD.
22+
23+
EF Core 5.0 will not run on .NET Framework.
24+
25+
### Breaking changes
26+
27+
EF Core 5.0 will contain some breaking changes, but these will be much less severe than was the case for EF Core 3.0. Our goal is to allow the vast majority of applications to update without breaking.
28+
29+
It is expected that there will be some breaking changes for database providers, especially around TPT support. However, we expect the work to update a provider for 5.0 will be less than was required to update for 3.0.
30+
31+
## Themes
32+
33+
We have extracted a few major areas or themes which will form the basis for the large investments in EF Core 5.0.
34+
35+
## Many-to-many navigation properties (a.k.a "skip navigations")
36+
37+
Lead developers: @smitpatel and @AndriySvyryd
38+
39+
Tracked by [#19003](https://github.com/aspnet/EntityFrameworkCore/issues/19003)
40+
41+
T-shirt size: L
42+
43+
Status: In-progress
44+
45+
Many-to-many is the most requested feature (~407 votes) on the GitHub backlog. Support for many-to-many relationships can be broken down into three major areas:
46+
47+
* Skip navigation properties. These allow the model to be used for queries, etc. without reference to the underlying join table entity.
48+
* Property-bag entity types. These allow a standard CLR type (e.g. `Dictionary`) to be used for entity instances such that an explicit CLR type is not needed for each entity type.
49+
* Sugar for easy configuration of many-to-many relationships.
50+
51+
We believe that the most significant blocker for those wanting many-to-many support is not being able to use the "natural" relationships, without referring to the join table, in business logic such as queries. The join table entity type may still exist, but it should not get in the way of business logic. This is why we have chosen to tackle skip navigation properties for 5.0.
52+
53+
At this time the other parts of many-to-many are being pursued as a stretch goal for EF Core 5.0. This means they are not currently in the plan for 5.0, but if things go well we hope to pull them in.
54+
55+
## Table-per-type (TPT) inheritance mapping
56+
57+
Lead developer: @AndriySvyryd
58+
59+
Tracked by [#2266](https://github.com/aspnet/EntityFrameworkCore/issues/2266)
60+
61+
T-shirt size: XL
62+
63+
Status: Not started
64+
65+
We're doing TPT because it is both a highly requested feature (~254 votes; 3rd overall) and because it requires some low-level changes that we feel are appropriate for the foundational nature of the overall .NET 5 plan. We expect this to result in breaking changes for database providers, although these should be much less severe than the changes required for 3.0.
66+
67+
## Filtered Include
68+
69+
Lead developer: @maumar
70+
71+
Tracked by [#1833](https://github.com/aspnet/EntityFrameworkCore/issues/1833)
72+
73+
T-shirt size: M
74+
75+
Status: Not started
76+
77+
Filtered Include is a highly-requested feature (~317 votes; 2nd overall) that isn't a huge amount of work, and that we believe will unblock or make easier many scenarios that currently require model-level filters or more complex queries.
78+
79+
## Rationalize ToTable, ToQuery, ToView, FromSql, etc.
80+
81+
Lead developers: @maumar and @smitpatel
82+
83+
Tracked by [#17270](https://github.com/aspnet/EntityFrameworkCore/issues/17270)
84+
85+
T-shirt size: L
86+
87+
Status: Not started
88+
89+
We have made progress in previous releases towards supporting raw SQL, keyless types, and related areas. However, there are both gaps and inconsistencies in the way everything works together as a whole. The goal for 5.0 is to fix these and create a good experience for defining, migrating, and using different types of entities and their associated queries and database artifacts. This may also involve updates to the compiled query API.
90+
91+
Note that this item may result in some application-level breaking changes since some of the functionality we currently have is too permissive such that it can quickly lead people into pits of failure. We will likely end up blocking some of this functionality together with guidance on what to do instead.
92+
93+
## General query enhancements
94+
95+
Lead developers: @smitpatel and @maumar
96+
97+
Tracked by [issues labeled with `area-query` in the 5.0 milestone](https://github.com/dotnet/efcore/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Aarea-query+milestone%3A5.0.0+)
98+
99+
T-shirt size: XL
100+
101+
Status: In-progress
102+
103+
The query translation code was extensively rewritten for EF Core 3.0. The query code is generally in a much more robust state because of this. For 5.0 we aren't planning on making major query changes, outside those needed to support TPT and skip navigation properties. However, there is still significant work needed to fix some technical debt left over from the 3.0 overhaul. We also plan to fix many bugs and implement small enhancements to further improve the overall query experience.
104+
105+
## Migrations and deployment experience
106+
107+
Lead developers: @bricelam
108+
109+
Tracked by [#19587](https://github.com/dotnet/efcore/issues/19587)
110+
111+
T-shirt size: L
112+
113+
Status: In-progress
114+
115+
Currently, many developers migrate their databases at application startup time. This is easy but is not recommended because:
116+
117+
* Multiple threads/processes/servers may attempt to migrate the database concurrently
118+
* Applications may try to access inconsistent state while this is happening
119+
* Usually the database permissions to modify the schema should not be granted for application execution
120+
* Its hard to revert back to a clean state if something goes wrong
121+
122+
We want to deliver a better experience here that allows an easy way to migrate the database at deployment time. This should:
123+
124+
* Work on Linux, Mac, and Windows
125+
* Be a good experience on the command line
126+
* Support scenarios with containers
127+
* Work with commonly used real-world deployment tools/flows
128+
* Integrate into at least Visual Studio
129+
130+
The result is likely to be many small improvements in EF Core (for example, better Migrations on SQLite), together with guidance and longer-term collaborations with other teams to improve end-to-end experiences that go beyond just EF.
131+
132+
## EF Core platforms experience
133+
134+
Lead developers: @roji and @bricelam
135+
136+
Tracked by [#19588](https://github.com/dotnet/efcore/issues/19588)
137+
138+
T-shirt size: L
139+
140+
Status: Not started
141+
142+
We have good guidance for using EF Core in traditional MVC-like web applications. Guidance for other platforms and application models is either missing or out-of-date. For EF Core 5.0 we plan to investigate, improve, and document the experience of using EF Core with:
143+
144+
* Blazor
145+
* Xamarin, including using the AOT/linker story
146+
* WinForms/WPF/WinUI and possibly other U.I. frameworks
147+
148+
This is likely to be many small improvements in EF Core, together with guidance and longer-term collaborations with other teams to improve end-to-end experiences that go beyond just EF.
149+
150+
Specific areas we plan to look at are:
151+
152+
* Deployment, including the experience for using EF tooling such as for Migrations
153+
* Application models, including Xamarin and Blazor, and probably others
154+
* SQLite experiences, including the spatial experience and table rebuilds
155+
* AOT and linking experiences
156+
* Diagnostics integration, including perf counters
157+
158+
## Performance
159+
160+
Lead developer: @roji
161+
162+
Tracked by [issues labeled with `area-perf` in the 5.0 milestone](https://github.com/dotnet/efcore/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Aarea-perf+milestone%3A5.0.0+)
163+
164+
T-shirt size: L
165+
166+
Status: In-progress
167+
168+
For EF Core we plan to improve our suite of performance benchmarks and make directed performance improvements to the runtime. In addition, we plan to complete the new ADO.NET batching API which was prototyped during the 3.0 release cycle. Also at the ADO.NET layer, we plan additional performance improvements to the Npgsql provider.
169+
170+
As part of this work we also plan to add ADO.NET/EF Core performance counters and other diagnostics as appropriate.
171+
172+
## Architectural/contributor documentation
173+
174+
Lead documenter: @ajcvickers
175+
176+
Tracked by [#1920](https://github.com/aspnet/EntityFramework.Docs/issues/1920)
177+
178+
T-shirt size: L
179+
180+
Status: Not started
181+
182+
The idea here is to make it easier to understand what is going on in the internals of EF Core. This can be useful to anyone using EF Core, but the primary motivation is to make it easier for external people to:
183+
184+
* Contribute to the EF Core code
185+
* Create database providers
186+
* Build other extensions
187+
188+
## Microsoft.Data.Sqlite documentation
189+
190+
Lead documenter: @bricelam
191+
192+
Tracked by [#1675](https://github.com/aspnet/EntityFramework.Docs/issues/1675)
193+
194+
T-shirt size: M
195+
196+
Status: Completed. The new documentation is [live on the Microsoft docs site](https://docs.microsoft.com/dotnet/standard/data/sqlite/?tabs=netcore-cli).
197+
198+
The EF Team also owns the Microsoft.Data.Sqlite ADO.NET provider. We plan to fully document this provider as part of the 5.0 release.
199+
200+
## General documentation
201+
202+
Lead documenter: @ajcvickers
203+
204+
Tracked by [issues in the docs repo in the 5.0 milestone](https://github.com/aspnet/EntityFramework.Docs/issues?utf8=%E2%9C%93&q=is%3Aissue+milestone%3A5.0.0+)
205+
206+
T-shirt size: L
207+
208+
Status: In-progress
209+
210+
We are already in the process of updating documentation for the 3.0 and 3.1 releases. We are also working on:
211+
* An overhaul of the getting started docs to make them more approachable/easier to follow
212+
* Reorganization of docs to make things easier to find and to add cross-references
213+
* Adding more details and clarifications to existing docs
214+
* Updating the samples and adding more examples
215+
216+
## Fixing bugs
217+
218+
Tracked by [issues labeled with `type-bug` in the 5.0 milestone](https://github.com/dotnet/efcore/issues?utf8=%E2%9C%93&q=is%3Aissue+milestone%3A5.0.0+label%3Atype-bug+)
219+
220+
Developers: @roji, @maumar, @bricelam, @smitpatel, @AndriySvyryd, @ajcvickers
221+
222+
T-shirt size: L
223+
224+
Status: In-progress
225+
226+
At the time of writing, we have 135 bugs triaged to be fixed in the 5.0 release (with 62 already fixed), but there is significant overlap with the _General query enhancements_ section above.
227+
228+
The incoming rate (issues that end up as work in a milestone) was about 23 issues per month over the course of the 3.0 release. Not all of these will need to be fixed in 5.0. As a rough estimate we plan to fix an additional 150 issues in the 5.0 time frame.
229+
230+
## Small enhancements
231+
232+
Tracked by [issues labeled with `type-enhancement` in the 5.0 milestone](https://github.com/dotnet/efcore/issues?utf8=%E2%9C%93&q=is%3Aissue+milestone%3A5.0.0+label%3Atype-enhancement+)
233+
234+
Developers: @roji, @maumar, @bricelam, @smitpatel, @AndriySvyryd, @ajcvickers
235+
236+
T-shirt size: L
237+
238+
Status: In-progress
239+
240+
In addition to the bigger features outlined above, we also have many smaller improvements scheduled for 5.0 to fix "paper-cuts". Note that many of these enhancements are also covered by the more general themes outlined above.
241+
242+
## Below-the-line
243+
244+
Tracked by [issues labeled with `consider-for-next-release`](https://github.com/aspnet/EntityFrameworkCore/issues?q=is%3Aopen+is%3Aissue+label%3Aconsider-for-next-release)
245+
246+
These are bug fixes and enhancements that are **not** currently scheduled for the 5.0 release, but we will look at as stretch goals depending on the progress made on the work above.
247+
248+
In addition, we always consider the [most voted issues](https://github.com/dotnet/efcore/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc) when planning. Cutting any of these issues from a release is always painful, but we do need a realistic plan for the resources we have.
249+
250+
## Feedback
251+
252+
Your feedback on planning is important. The best way to indicate the importance of an issue is to vote (thumbs-up) for that issue on GitHub. This data will then feed into the [planning process](../release-planning.md) for the next release.

0 commit comments

Comments
 (0)