Entity Framework 6
As we work on EF6 we will be creating feature specifications, walkthroughs and other documentation.
Tooling
Our focus with the tooling has been on adding EF6 support and enabling us to easily ship out-of-band between releases of Visual Studio.
The tooling itself does not include any new features, but most of the new runtime features can be used with models created in the EF Designer.
Runtime
The following features work for models created with Code First or the EF Designer:
- Async Query and Save adds support for the task-based asynchronous patterns that were introduced in .NET 4.5. We've created awalkthrough and a feature specification for this feature.
- Connection Resiliency enables automatic recovery from transient connection failures. The feature specification shows how to enable this feature and how to create your own retry policies.
- Code-Based Configuration gives you the option of performing configuration – that was traditionally performed in a config file – in code. We've created anoverview with some examples and a feature specification.
- Dependency Resolution introduces support for the Service Locator pattern and we've factored out some pieces of functionality that can be replaced with custom implementations. We’ve created a feature specification and a list of services that can be injected.
- Interception/SQL logging provides low-level building blocks for interception of EF operations with simple SQL logging built on top. We've created afeature specification for this feature and Arthur Vickers has created a multi-part blog series covering this feature.
- Testability improvements make it easier to create test doubles for DbContext and DbSet. We’ve created walkthroughs showing how to take advantage of these changesusing a mocking framework orwriting your own test doubles.
- Enums, Spatial and Better Performance on .NET 4.0 - By moving the core components that used to be in the .NET Framework into the EF NuGet package we are now able to offer enum support, spatial data types and the performance improvements from EF5 on .NET 4.0.
- DbContext can now be created with a DbConnection that is already openedwhich enables scenarios where it would be helpful if the connection could be open when creating the context (such as sharing a connection between components where you can not guarantee the state of the connection).
- Default transaction isolation level is changed to READ_COMMITTED_SNAPSHOT for databases created using Code First, potentially allowing for more scalability and fewer deadlocks.
- DbContext.Database.UseTransaction and DbContext.Database.BeginTransaction are new APIs that enable scenarios where you need to manage your own transactions.
- Improved performance of Enumerable.Contains in LINQ queries.
- Significantly improved warm up time (view generation) – especially for large models – as the result of a contributions fromAlirezaHaghshenas andVSavenkov.
- Pluggable Pluralization & Singularization Service was contributed byUnaiZorrilla.
- Improved Transaction Support updates the Entity Framework to provide support for a transaction external to the framework as well as improved ways of creating a transaction within the Framework. See this feature specification for details.
- Entity and complex types can now be nestedinside classes.
- Custom implementations of Equals or GetHashCode on entity classes are now supported. See the feature specification for more details.
- DbSet.AddRange/RemoveRange were contributed by UnaiZorrilla and provides an optimized way to add or remove multiple entities from a set.
- DbChangeTracker.HasChanges was contributed by UnaiZorrilla and provides an easy and efficient way to see if there are any pending changes to be saved to the database.
- SqlCeFunctions was contributed by ErikEJ and provides a SQL Compact equivalent to the SqlFunctions.
The following features apply to Code First only:
- Custom Code First Conventions allow write your own conventions to help avoid repetitive configuration. We provide a simple API for lightweight conventions as well as some more complex building blocks to allow you to author more complicated conventions. We’ve created a walkthough and a feature specification for this feature.
- Code First Mapping to Insert/Update/Delete Stored Procedures is now supported. We’ve created a feature specification for this feature.
- Idempotent migrations scripts allow you to generate a SQL script that can upgrade a database at any version up to the latest version. The generated script includes logic to check the __MigrationsHistory table and only apply changes that
haven't been previously applied. Use the following command to generate an idempotent script.
Update-Database -Script -SourceMigration $InitialDatabase
- Configurable Migrations History Table allows you to customize the definition of the migrations history table. This is particularly useful for database providers that require the appropriate data types etc. to be specified for the Migrations History table to work correctly. We’ve created a feature specification for this feature.
- Multiple Contexts per Database removes the previous limitation of one Code First model per database when using Migrations or when Code First automatically created the database for you. We’ve created a feature specification for this feature.
- DbModelBuilder.HasDefaultSchema is a new Code First API that allows the default database schema for a Code First model to be configured in one place. Previously the Code First default schema was hard-coded to "dbo" and the only way to configure the schema to which a table belonged was via the ToTable API.
- DbModelBuilder.Configurations.AddFromAssembly method was contributed byUnaiZorrilla. If you are using configuration classes with the Code First Fluent API, this method allows you to easily add all configuration classes defined in an assembly.
- Custom Migrations Operations were enabled by a contribution fromiceclow and this blog post provides an example of using this new feature.
Other Documentation
In addition to new features, here are some other topics relevant to EF6.
- Updated Provider Model - In previous versions of EF some of the core components were a part of the .NET Framework. In EF6 we've moved all these components into our NuGet package, allowing us to develop and deliver more features in a shorter time frame. This move required some changes to our provider model. We've created a document that details the changes required by providers to support EF6, and provided alist of providers that we are aware of with EF6 support.
- Upgrading Applications to EF6– In some cases you may need to update your EF5 code to work with EF6, see Updating Applications to use EF6.
Entity Framework 5
The EF5 release was largely completed prior to moving to CodePlex, these documents only include the final set of changes made in EF5.
Backlog
These documents are for features that have not yet been assigned a release.