aspnet / Announcements

Subscribe to this repo to be notified about major changes in ASP.NET Core and Entity Framework Core
Other
1.65k stars 79 forks source link

EF Core 2.2 Roadmap #308

Open divega opened 6 years ago

divega commented 6 years ago

EF Core 2.2 is a small release

Unlike EF Core 2.1, the 2.2 release will include a small number of new features. We are concentrating most of our efforts to add new functionality on the 3.0 release. Still, you can expect 2.2 to include lots of bugs fixes, community contributions and small improvements.

You can access the list of issues currently assigned to the 2.2 milestone using this query on our issue tracking system.

Schedule

The schedule of EF Core 2.2 will align with the schedule of .NET Core and ASP.NET Core 2.2. See the ASP.NET Core 2.2 Roadmap announcement.

Our current plan is to have three previews before we ship RTM near the end of 2018:

New features

Reverse engineering of database views into query types (This feature was postponed. See update at https://github.com/aspnet/Announcements/issues/308#issuecomment-432395781)

In EF Core 2.1 we added query types, which allow mapping .NET objects to views and tables without keys. In 2.2, we plan to leverage this new capability to automatically map existing database views to query types.

You can track the progress of this at https://github.com/aspnet/EntityFrameworkCore/issues/1679.

Support for collections of owned entities

In EF Core 2.0 we added the concept of owned entity types, which allows modeling ownership relationship that are common between entities that are part of the same document in document-oriented databases or the same aggregate if you use Domain-Driven Design concepts in your model.

Until now, we only support reference navigation properties to owned entities. In EF Core 2.2, we plan to enhance this functionality to map collection navigation properties to owned entities.

You can track the progress of this at https://github.com/aspnet/EntityFrameworkCore/issues/8172.

Other work

There are some additional work items that are not strictly EF Core 2.2 features, but we still track as part of the 2.2 milestone because we are doing the work in the same timeframe:

Cosmos DB provider

A lot of our efforts are going into productizing an EF Core provider for the SQL API in Cosmos DB. We have already created a prototype, which we have shown in demos such as in this this EF Core 2.1 talk we did at the Microsoft Build conference.

Due to competing priorities, releasing a preview of this provider has taken more than what we originally planned, but we are working on it now, and the current plan is to release a stable version by the end of this calendar year.

You can track our progress on this issue: https://github.com/aspnet/EntityFrameworkCore/issues/12086.

Preview of spatial support for SQL Server

We are also focusing on adding spatial support as an extension to the SQL Server provider for EF Core. Note that the PostgreSQL provider (Npgsql) already added support in EF Core 2.1. Beside implementing this functionality for SQL Server, we are working closely with the developers of Npgsql to try to achieve a consistent and hopefully improved experience across providers.

Note that we aren't committing to having a final version of the spatial support for the end of the current calendar year. But we are actively working on this now, and as we make progress, we should be able to provide a more precise estimate.

You can track our progress on this issue: https://github.com/aspnet/EntityFrameworkCore/issues/1100.

Improve test coverage for LINQ and reduce query regressions in future releases

In the last few releases, we have seen that when we commit improvements to our LINQ implementation, we often break queries that were previously working. The main challenge is that LINQ defines a huge space of possible queries to test, and it is very complex to measure what level of test coverage we have, even for a specific query operator. In the 2.2 timeframe, we will be investing on improving test coverage for this huge space. We also plan to experiment with new approaches to add appropriate coverage, and to reduce the likelihood of introducing regressions in future releases.

You can track our progress on this at https://github.com/aspnet/EntityFrameworkCore/issues/12046.

For discussion on this roadmap, please use https://github.com/aspnet/EntityFrameworkCore/issues/12465.

divega commented 5 years ago

We recently released EF Core 2.2 Preview 3. See the complete announcement on the .NET Blog.

Preview 3 is going to be the last milestone before EF Core 2.2 RTM

So now is your last chance to try the bits and give us feedback if you want to have an impact on the quality and the shape of the APIs in this release.

Besides playing with spatial support, you can help by trying EF Core 2.2 preview 3 on applications that are using third party providers. Although we now have our own testing for this, there might be unforeseen compatibility problems, and the earlier we can detect them, the higher chances we have of addressing them before RTM.

We thank you in advance for reporting any issues your find on our issue tracker on GitHub.

Roadmap update

We have made a few adjustments to the EF Core 2.2 plan since we posted it here. The main changes are:

  1. Spatial support (aspnet/EntityFrameworkCore#1100.): This feature is now fully committed for 2.2. It includes support for SQL Server, SQLite and In-memory, using the spatial library NetTopologySuite, which is also used by Npgsql to enable spatial support for PostgreSQL.

  2. Reverse engineering database views into query types (aspnet/EntityFrameworkCore#1679): This feature is postponed to EF Core 3.0.

  3. Cosmos DB provider (https://github.com/aspnet/EntityFrameworkCore/issues/8443): This feature is postponed to some time after 2.2. However EF Core 2.2 Preview 3 includes an updated version of the provider.

    Although we have made a lot of progress setting up the required infrastructure for document-oriented database support in EF Core, and have been steadily adding functionality to the provider, realistically we cannot arrive to a state in which we can release the provider with adequate functionality and quality in the current time frame for 2.2.

    Overall, we have found that the work necessary to complete the provider to be more than we initially estimated. Also, ongoing evolution in Cosmos DB is leading us to frequently revisit decisions about such things as how we use the Cosmos DB SDK, whether we map all entities to a single collection by default, etc.

    We intend to maintain the focus on the provider and to continue working with the Cosmos DB team and to keep releasing previews of the provider regularly. You can expect at least one more preview by the end of this year, and RTM sometime in 2019. We haven’t decided yet if the Cosmos DB provider will release as part of EF Core 3.0 or earlier.

    The best way to keep track of our progress on the Cosmos DB provider is the checklist at aspnet/EntityFrameworkCore#12086.