Skip to main content

The Plan for Entity Framework Core 6.0

Today we are excited to share with you the plan for Entity Framework Core 6.0.

EF Core 6.0

This plan brings together input from many stakeholders and outlines where and how we intend to invest for the Entity Framework (EF Core) 6.0 release. This plan is not set-in-stone and will evolve as we work on the release based on what we learn. This learning includes feedback from people like you, so please let us know what you think!

IMPORTANT This plan is not a commitment. It is a starting point that will evolve as we learn more. Some things not currently planned for 6.0 may get pulled in. Some things currently planned for 6.0 may get punted out.

General information

EF Core 6.0 is the next release after EF Core 5.0 and is currently scheduled for November 2021 at the same time as .NET 6. EF Core 6.0 will align with .NET 6 as a long-term support (LTS) release.

EF Core 6.0 will likely target .NET 6 when released. It is unlikely to support any .NET Standard version. It will not run on .NET Framework. See the future of .NET Standard for more information.

Themes

Highly requested features

As always, a major input into the planning process comes from the voting (👍) for features on GitHub. For EF Core 6.0 we plan to work on the following highly requested features:

  • SQL Server temporal tables
    • Allow temporal tables to be created via Migrations, as well as allowing access to historical data through LINQ queries.
  • JSON columns
    • Introduce common patterns for JSON support that can be implemented by any database provider.
    • JSON column support will be implemented for SQL Server and SQLite. (Note that the PostgreSQL and MySQL providers already support JSON columns.)
  • ColumnAttribute.Order
    • Allow arbitrary ordering of columns when creating a table with Migrations or EnsureCreated.

Performance

While EF Core is generally faster than EF6, there are still areas where significant improvements in performance are possible. We plan to tackle several of these areas in EF Core 6.0, while also improving our perf infrastructure and testing.

  • Performance infrastructure and new tests
    • Improve the infrastructure for performance tests as well as adding new tests and fixing low-hanging fruit.
  • Compiled models
    • Compiled models will improve startup performance, as well as having generally better performance when accessing the model.
  • TechEmpower Fortunes
    • We plan to match Dapper performance on the TechEmpower Fortunes benchmark. (This is a significant challenge which will likely not be fully achieved. Nevertheless, we will get as close as we can.)
  • Linker/AOT
    • We will continue investigating in making EF Core work better with linkers and AOT. We do not expect to fully close the gap in the 6.0 timeframe, but we hope to make significant progress.

Migrations and deployment

Following on from the investigations done for EF Core 5.0, we plan to introduce improved support for managing migrations and deploying databases. This includes two major areas:

  • Migrations bundles
    • Migrations bundles will provide a simple, robust mechanism for deploying EF Core migrations.
  • Managing migrations
    • Wwe plan to improve the tools and project/assembly management for EF Core migrations.

Improve existing features and fix bugs

  • EF6 query parity
    • We plan to close the query gap to EF6 and make supported EF Core queries a true superset of supported EF6 queries.
  • Value objects
    • We plan to introduce a better experience focused on the needs of value objects in domain-driven design.
    • This approach will be based on value converters rather than owned entities which have proved not to be a good fit.
  • Cosmos database provider
    • We are actively gathering feedback on which improvements to make to the Cosmos provider in EF Core 6.0; please make sure to vote (👍) for the Cosmos features that you need.
  • Expose model building conventions to applications
    • Model building conventions are currently controlled by the database provider. In EF Core 6.0, we intend to allow applications to hook into and change these conventions.
  • Zero bug balance (ZBB)
    • We plan to fix all outstanding non-blocked bugs during the EF Core 6.0 timeframe.
  • Miscellaneous smaller features
    • Split query for non-navigation collections
    • Detect simple join tables in reverse engineering and create many-to-many relationships
    • Complete full/free-text search on SQLite and SQL Server
    • SQL Server Spatial Indexes
    • Mechanism/API to specify a default conversion for any property of a given type in the model
    • Use the new batching API from ADO.NET

.NET integration

The EF Core team also works on several related but independent .NET Data technologies. In particular, we plan to work on:

  • Enhancements to System.Data
    • Implementation of the new batching API
    • Continued work with other .NET teams and the community to understand and evolve ADO.NET
    • Standardize on DiagnosticSource for tracing in System.Data components
  • Enhancements to Microsoft.Data.Sqlite
    • Connection pooling
    • Prepared statements
  • Nullable reference types

Experiments and investigations

The EF team is planning to invest time during the EF Core 6.0 timeframe experimenting and investigating in two areas. This is a learning process and as such no concrete deliverables are planned for the 6.0 release.

  • SqlServer.Core
    • An experiment in collaboration with the community to determine what potential there is modern .NET features in a highly performant SQL Server driver.
  • GraphQL
    • We plan to investigate the space and collaborate with the community to find ways to improve the experience of using GraphQL with .NET.

Find out more

This post is a brief summary of the full EF Core 6.0 Plan. Please see the full plan for more information.

Suggestions

Your feedback on planning is important. The best way to indicate the importance of an issue is to vote (👍) for that issue on GitHub. This data will then feed into the planning process for the next release.

In addition, please comment on this post if you believe we are missing something that is critical for EF Core 6.0, or are focusing on the wrong areas.

The post The Plan for Entity Framework Core 6.0 appeared first on .NET Blog.



source https://devblogs.microsoft.com/dotnet/the-plan-for-entity-framework-core-6-0/

Comments

Popular posts from this blog

Fake CVR Generator Denmark

What Is Danish CVR The Central Business Register (CVR) is the central register of the state with information on all Danish companies. Since 1999, the Central Business Register has been the authoritative register for current and historical basic data on all registered companies in Denmark. Data comes from the companies' own registrations on Virk Report. There is also information on associations and public authorities in the CVR. As of 2018, CVR also contains information on Greenlandic companies, associations and authorities. In CVR at Virk you can do single lookups, filtered searches, create extracts and subscriptions, and retrieve a wide range of company documents and transcripts. Generate Danish CVR For Test (Fake) Click the button below to generate the valid CVR number for Denmark. You can click multiple times to generate several numbers. These numbers can be used to Test your sofware application that uses CVR, or Testing CVR APIs that Danish Govt provide. Generate

How To Iterate Dictionary Object

Dictionary is a object that can store values in Key-Value pair. its just like a list, the only difference is: List can be iterate using index(0-n) but not the Dictionary . Generally when we try to iterate the dictionary we get below error: " Collection was modified; enumeration operation may not execute. " So How to parse a dictionary and modify its values?? To iterate dictionary we must loop through it's keys or key - value pair. Using keys

How To Append Data to HTML5 localStorage or sessionStorage?

The localStorage property allows you to access a local Storage object. localStorage is similar to sessionStorage. The only difference is that, while data stored in localStorage has no expiration time untill unless user deletes his cache, data stored in sessionStorage gets cleared when the originating window or tab get closed. These are new HTML5 objects and provide these methods to deal with it: The following snippet accesses the current domain's local Storage object and adds a data item to it using Storage.setItem() . localStorage.setItem('myFav', 'Taylor Swift'); or you can use the keyname directly as : localStorage.myFav = 'Taylor Swift'; To grab the value set in localStorage or sessionStorage, we can use localStorage.getItem("myFav"); or localStorage.myFav There's no append function for localStorage or sessionStorage objects. It's not hard to write one though.The simplest solution goes here: But we can kee