Skip to content

Releases: dotnet/efcore

7.0.0-alpha3

15 Aug 22:16
Compare
Choose a tag to compare
7.0.0-alpha3 Pre-release
Pre-release

Since Alpha 2 the majority of our work has been around adding or improving the core components of the EF7 code base and improving test coverage.

These release notes only list the more prominent changes/improvements/additions that affect the functionality available to developers using EF7.

Please bear in mind that this preview is designed to give you an idea of what the experience in EF7 will be like and you will quickly hit limitations if you deviate from any sample code and/or try to use advanced features. The API surface will also change significantly in future previews.

Providers

In Alpha 3 we made progress on our various database providers:

  • EntityFramework.SqlServer - More query operators are now processed in the data base. We also made general improvements to the DDL Pipeline and the Update Pipeline.
  • EntityFramework.SQLite - We brought the Query Pipeline, Update Pipeline and DDL Pipeline up to a similar quality level as the SQL Server provider.
  • EntityFramework.AzureTableStorage - This provider was checked into our main code base and can now be used to target Azure Table Storage. Basic query processing is implemented so that filters on row and partition key are processed in the database. The Update and DDL pipelines also have basic functionality implemented.
  • EntityFramework.InMemory - We didn't make any significant changes to this provider. It has basic functionality implemented and is useful for testing scenarios etc.

Definition of Provider Terms

Query Pipeline: The component that translates a LINQ query into a store specific query and then passes results back to EF.
Update Pipeline: The component that translates information from the ChangeTracker into store specific update commands (i.e. INSERT/UPDATE/DELETE on a relational database).
DDL Pipeline: The component that creates schema objects in the database (i.e. Tables, Columns, etc. in a relational database).

Relationship Fix-up / Change Detection

We implemented more of the functionality that detects changes to the values stored in the properties of your objects. This also includes automatically 'fixing up' the values stored in navigation and foreign-key properties when EF detects that one of them has changed.

Migrations

We enabled the migrations commands for non-ASP.NET vNext applications. If you install the EntityFramework.Design NuGet package, the Add-Migration and Update-Database commands will be available in Package Manager Console. Note that the Enable-Migrations command is no longer required or available.

EF 7.0.0-alpha2

08 Jul 16:31
Compare
Choose a tag to compare
EF 7.0.0-alpha2 Pre-release
Pre-release

Since Alpha 1 the majority of our work has been around adding or improving the core components of the EF7 code base and improving test coverage.

These release notes only list the more prominent changes/improvements/additions that affect the functionality available to developers using EF7.

Please bear in mind that this preview is designed to give you an idea of what the experience in EF7 will be like and you will quickly hit limitations if you deviate from any sample code and/or try to use advanced features. The API surface will also change significantly in future previews.

Package Renames

We renamed most of the data access related packages to better align with the existing EF6 package names.

The new names for the top level packages you would install in a project are listed below. We also renamed a number of the infrastructure packages, but they will be pulled in as needed when you install one of the packages listed below.

  • EntityFramework
  • EntityFramework.SqlServer
  • EntityFramework.SQLite
  • EntityFramework.AzureTableStorage
  • EntityFramework.InMemory

Providers

In Alpha 2 we made progress on our various database providers:

  • EntityFramework.SqlServer - The most notable change from Alpha 1 is that we now process a number of LINQ operations in the database (as opposed to always sending a SELECT * FROM xyz query as we did in Alpha 1. These include filtering, sorting, projection (i.e. selecting a subset of columns), and others. We also made general improvements to the DDL Pipeline and the Update Pipeline.
  • EntityFramework.SQLite - This release contains some early work on the SQLite provider. There are still a number of issues to be addressed in the Query, Update, and DDL pipelines.
  • EntityFramework.InMemory - We didn't make any significant changes to this provider. It has basic functionality implemented and is useful for testing scenarios etc.

Definition of Provider Terms

Query Pipeline: The component that translates a LINQ query into a store specific query and then passes results back to EF.
Update Pipeline: The component that translates information from the ChangeTracker into store specific update commands (i.e. INSERT/UPDATE/DELETE on a relational database).
DDL Pipeline: The component that creates schema objects in the database (i.e. Tables, Columns, etc. in a relational database).

Async Query Operators

More of the asynchronous query operators (such as ToListAsync(), FirstAsync()) are now functional.

Generalized DbContext.Database Methods

As we've worked on targeting no-relational data stores it became apparent that the fine grained DDL methods on DbContext.Database (such as Exists(), HasTables(), etc.) were not applicable to most non-relational databases. We now have more generic EnsureCreated() and EnsureDeleted() methods on DbContext.Database.

The relational specific methods are available by using the AsRelational() extension method that is available when targeting a relational provider. For example, myContext.Database.AsRelational().Exists(). If you attempt to use AsRelational() when targeting a non-relational database, it will throw.

Note that the DDL methods on DbContext.Database are being widely used in samples etc. at the moment because Migrations is not yet available to handle database creation and alteration. Once Migrations is available, these methods should only be used to create databases for unit testing etc.