EF 7.0.0-alpha2
Pre-releaseSince 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.