Skip to content

Releases: dotnet/efcore

7.0.0-beta7

02 Sep 17:18
Compare
Choose a tag to compare
7.0.0-beta7 Pre-release
Pre-release

Features

  • Reverse engineer model from database (#830)
  • Convention-based model builder support for Data Annotations (#107)

Bugs Fixed

  • EF7-beta6 : "Superkey" produces a migration issue (#2788)
  • Add-Migration fails on a UWP class library (#2784)
  • PropertyAttributeConvention does not apply to non-public properties (#2766)
  • ModelSnapshot: Ensure using directives present for annotation types (#2715)
  • Migrations revert in the wrong order when going to "0" (#2695)
  • Failure adding NuGet ref to EF.Relational.FunctionalTests from release branch (#2680)
  • Commands: Microsoft.CodeAnalysis.CSharp missing on UWP (#2661)
  • Commands: "Lazily" use EntityFramework.Relational.Design to enable UWP (#2619)
  • Sqlite Migration AutoIncrement wrong cast (string instead of boolean) (#2545)
  • SqlServerHistoryRepository.Exists doesn't use SqlStatementExecutor (#2497)
  • Migrations: Defer type mapping (#2421)
  • Calling AddSqlServer more than once shouldn't result in an error. (#2090)
  • SqlServerSequenceValueGenerator inefficient (#1540)
  • Reverting migration that adds column with default value throws (#1345)

7.0.0-beta6

28 Jul 19:50
Compare
Choose a tag to compare
7.0.0-beta6 Pre-release
Pre-release

Features

  • RevEng: Allow customers to override the default templates (#2418)
  • RevEng: Command option for adding codegen template into project (#2415)
  • RevEng: Ignore __MigrationHistory table (#1929)
  • Add support for execution of a raw command on the data store (#1863)
  • RevEng: Convert CodeGen part to use templates (#1666)
  • Migrations: Support database schemas (#948)
  • IndentedStringBuilder shouldn't create space-only lines (#654)
  • Enable configuring CommandTimeout on framework-created DbCommand objects (#605)
  • Define patterns/APIs for using configuration (#192)

Bugs Fixed

  • Migrations generate wrong order for DropForeignKey and DropPrimaryKey (#2509)
  • Make DiscriminatorValue object instead of string (#2444)
  • Full .NET build error after installing EntityFramework.SqlServer (Multiple assemblies with equivalent identity have been imported) (#2340)
  • FromSql query parameter name collisions (#2309)
  • SQL Server: "malformed" SQL in HistoryRepository (#2190)
  • FromSql: Crash when composing multiple calls (#2185)
  • SQLite DDL fails on Windows 10 UAP (#2184)
  • Help with my configuration: Could not load file or assembly 'System, Version=4.0.0.0 ... (#2153)
  • MigrationBuilder.CreateSchema(string name) + SQL Server is missing batch sepator (#2112)
  • Using a DB Context that Extends IdentityDbContext<TUser, TRole, TKey> where TKey: Guid causes an error on add migration (#2099)
  • Migrations :: ForSqlServer() configuration doesn't work with migrations (#1975)
  • RevEng: Self referencing relationships only partially specified in generated code (#1936)
  • RevEng: .Required() not generated for nullable CLR types that are NOT NULL in database (#1935)
  • Migrations create dbo.DefaultSequence when named schema is specified (#1919)
  • Migrations: Handle transitive renames (#1907)
  • Migrations: Topologically sort DropTable operations (#1903)
  • Foreign key name is incorrectly generated for one:many relationships (#1697)
  • Migrations: Improve error message when commands not installed in project that contains the context (#1459)
  • Migrations: Default value not scaffolded for non nullable fields causing error (#1275)
  • Attempting to set type to "Nullable`1" in DbContext (#1195)
  • Perf tests run when running all tests in TestDriven.NET (#1139)
  • Commands :: "k ef migration add" throws argument null exception (expecting the migration name) - but we should provide a nicer message (#980)
  • Read relevant DbContextOptions from IConfiguration (#849)

7.0.0-beta5

30 Jun 21:07
Compare
Choose a tag to compare
7.0.0-beta5 Pre-release
Pre-release

Features

  • Commands: Support Windows 10 (UAP) Projects (#1963)
  • Bring back SQLite (#1953)
  • Target Windows 10 (UAP) (#1952)
  • Method to get EntityType properties ordered by key members first (#1634)
  • Migrations: Log more info (#975)
  • Update SQLite Provider to support all Built-In Data Types (#677)
  • Commands: Help/Documentation (#578)
  • SQLite: add a value generator for Int32 (#300)

Bugs Fixed

  • Versioning of EF Test MyGet packages (#2252)
  • Second migration uses different folders (beta5-13202) (#2215)
  • SQLite database delete not supported on Windows 10 UAP (#2183)
  • CSharpHelper depends on the local system's culture (#2143)
  • No value generator is available for properties of type 'Decimal' (#2087)
  • Migrations :: invalid migration created for nested classes (#1969)
  • Setting EntityType.BaseType does not throw if Child property duplicates new parent property (#1954)
  • SQLite Add-Migration failing when OneToMany present (#1209)
  • SQlite: Exception "ExecuteReader can only be called when the connection is open." (#1156)
  • Not possible to map Guid to columns declared as BLOB with SQLite (#1068)
  • Change casing of SQLite classes (#1047)
  • Use strongly typed ReadValue when reading values into shadow state (#738)
  • SQLite: Better error messages (rather than "SQL logic error or missing database") (#212)

7.0.0-beta4

29 Apr 18:08
Compare
Choose a tag to compare
7.0.0-beta4 Pre-release
Pre-release

Still very much a preview

EF7 introduces some significant changes and improvements over EF6.x and therefore the pre-release phase of EF7 is much longer than other recent releases. We’ve made significant progress since our last pre-release, but if you decide to try out EF7 then please bear in mind that this preview is designed to give you an idea of what the experience will be like and there are still a number of limitations and missing features that will be addressed before RTM.

If you aren’t comfortable working with a prerelease that is still very much in-flux then don’t worry… there will be plenty of opportunity to try out pre-release EF7 once it is much more stable.

Where can I use Beta 4?

Beta 4 can be used in the following types of applications

  • ASP.NET 5 applications that target either full .NET or the new .NET Core. EF7 is included in new ASP.NET 5 applications that are created using the “Web Site” project template. The following resources will help you get started using EF7 in ASP.NET 5:
  • WPF, WinForms, Console and ASP.NET 4 applications that target .NET 4.5.1 or later. We only recommend this for trying out EF7 in sample applications. If you are writing a production application then you should continue to use EF6.x. We do not recommend attempting to upgrade an EF6.x application to EF7 at this stage as there are still key features yet to be implemented on EF7 (such as inheritance support which is currently being implemented).
  • Mac and Linux applications targeting Mono 3.12.1 or later can make use of EF7. We have not done extensive testing of this scenario, but basic query and save functionality works.

What databases can I target with Beta 4?

Currently you can target SQL Server or our in-memory store (designed to help with testing). These providers are available in the EntityFramework.SqlServer and EntityFramework.InMemory NuGet packages.

We are working on other providers that will be available for the next prerelease (more on that below).

What’s implemented in Beta 4?

Here is a rough guide to what currently works in Beta 4. Most of these features are a work-in-progress and still have limitations.

  • Basic modeling including built-in conventions, table/column mapping, and relationships
  • Change tracking
  • LINQ queries
  • Table based Insert/Update/Delete (including batching)
  • Migrations and database creation/deletion
  • Transactions (including automatic transactions during SaveChanges and explicit transaction APIs)
  • Identity and Sequence patterns for database generated key values
  • Raw SQL commands
  • An early preview of reverse engineering a model from a database
  • Logging
  • Unique constraints including the ability to use them as keys in a relationship

What’s Next

Here are some of the areas we are currently working on (or working with other development teams to deliver). You can see many of these features already underway in our working code base.

Providers

There is work underway to enable the following database providers. We’ve also had contact with many other providers who are planning to provide EF7 support.

  • SQLite (being developed by the EF team)
  • PostgreSql (being developed by the npgsql team)
  • MySql (being developed by the MySql team)

Platforms

We are working to enable EF7 use on the following platforms:

  • Windows 10 Universal Application Platform
  • Cross-platform .NET for Mac and Linux
  • Android and iOS Mono frameworks

Features

Here are a number of the cross-cutting features we are currently working on. This isn’t all we will be doing for RTM, just what’s currently underway.

  • Inheritance
  • Cascade delete
  • Template-based reverse engineering from a database

7.0.0-beta3

23 Feb 17:30
Compare
Choose a tag to compare
7.0.0-beta3 Pre-release
Pre-release

Features

  • Implement AttachGraph (#1229)
  • Make EntityFramework a meta-package (#1049)
  • Commands: Remove-Migration (#631)

Bugs Fixed

  • Should be able to add a dependent entity with identifying FK before the principal (#1207)

7.0.0-beta2

16 Jan 15:09
Compare
Choose a tag to compare
7.0.0-beta2 Pre-release
Pre-release

Features

  • Migrations: Apply-Migrations error message on Phone/Store apps (#822)
  • Consider making resource string helpers public (#804)
  • Decide on best default sizes for relational and provider-specific types (#768)
  • Commands: Infer namespace (and directory) from last migration (#671)
  • Easier state entry access when adding entities (#498)

Bugs Fixed

  • sqlite, decimal and non-US locale - System.FormatException: Input string was not in a correct format (#1057)
  • Commands: Use-DbContext should not affect commands invoked on other projects (#990)

7.0.0-beta1

12 Nov 15:33
Compare
Choose a tag to compare
7.0.0-beta1 Pre-release
Pre-release

Features

  • Commands: Wire-up Logging (#807)
  • Migrations PowerShell: Support win81, wpa81, and portable projects (#579)
  • Migrations: KRE Command Line Interface (#342)

Bugs Fixed

  • EF7 on VS 14 CTP4 on Windows 10 (#896)
  • Commands: Discover context types from migrations (#670)

7.0.0-alpha4

06 Oct 15:48
Compare
Choose a tag to compare
7.0.0-alpha4 Pre-release
Pre-release
Use ContextTypeAttribute during migration discovery

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.