Releases: dotnet/efcore
1.0.0-rc2
Features
- Query: Sargability of string literals in combination with non-Unicode columns (#4686)
- CLI Commands: Support .NET Framework-only projects (#4577)
- Revisit using DbSet property names for table names by default (#4540)
- Change default graph behavior of Add/Attach/etc (#4424)
- ModelBuilder: Avoid "guessing" principal/dependent in 1:1 relationships (#4313)
- Reveng: entity class properties in the same order of table fields (#4062)
- Commands: .NET Core CLI Implementation (#3925)
- Better experience/support for migrations in class library (#3879)
- Reverse Enginer: Support type aliases (user-defined data types) (#3843)
- Commands: Look for ConfigureServices in Program (#3802)
- Query: Support in-memory processing of INTERSECT,CONCAT,EXCEPT,UNION (#3638)
- Make it easy to create a provider configured ModelBuilder (#3529)
- Scaffolding: reverse engineer sequences (#3510)
- Add a guard to prevent interleaving of async calls (#3291)
- Reverse Engineer: Can we just scaffold string properties for
xml
,hierarchyid
,geography
,geometry
, etc (#3076) - Metadata: Allow indexes and foreign keys to use inherited properties (#2514)
- Migrations: Separate statements with empty lines (#1951)
- Support for inserting/updating tables with triggers (not use OUTPUT when batching off) (#1441)
- Code First: One-to-one FK APIs should introduce shadow properties (#1124)
- Commands: PMC cmdlets for xproj (#978)
Bugs Fixed
- Migrations: Error when adding migration to directory outside of project (#5277)
- CLI Commands: migrations not added to relative-up output directories (#5187)
- Exception message when updating to RC2 (#5076)
- SQL Client: Unable to load DLL 'sni.dll' (#4953)
- Investigate test regression in SQL Client on Linux (#4915)
- Using ForeignKeyAttribute to control the name of a FK property unexpectedly swaps principal and dependent sides and sets cardinality to 1:1 (#4909)
- Shadow FK created by replicating the property type from principal key are non-nullable (#4895)
- Boolean condition with non entity member in where() throw exception (#4868)
- Changes in derived related entities are not detected (#4817)
- Timestamp/IsConcurrencyToken causes invalid UPDATE if no data modified (SQLServer) (#4814)
- Windows 10 UWP with Sqlite: remove-migration error (#4812)
- Latest RC2 packages do not install in latest UWP builds (#4802)
- Migrations :: exception thrown when trying to add migration using regular dotnet project (csproj) (#4796)
- Validate that all leaves in the entity types hierarchy are concrete (#4793)
- [Nightly] Base DbContext prefers parameterless constructor when injected (#4784)
- Suggestion: More detailed exception message for missing custom discriminator value. (#4776)
- Metadata :: null argument in ReferenceBuilder (#4715)
- cannot add EFCore.Relational build 20093 to .NET 4.5.1 class library (#4708)
- RevEng: SQL Server Provider: Update tables metadata query for SQL Server 2016 (#4697)
- ModelBuilder fails depending on properties names (#4682)
- CLI Commands:
dbcontext scaffold
has two -s options (#4677) - Exception msg for properties not included in the model (#4627)
- Filtering NVARCHAR column is missing "N" when using string literal (#4622)
- Cannot add Microsoft.EFCore.Relational.Design.FunctionalTest package to test project (#4613)
- Query: Revisit Enumerable.Contains command caching (#4605)
- Error when querying with two Contains statements (#4597)
- Partial updating with InMemoryDatabases (#4527)
- Reconsider ValueGeneratedOnAddOrUpdate + HasDefaultValueSql = Computed Column (#4501)
- Property mapping validation provides unhelpful message for primitive type that cannot be mapped (#4484)
- SQL Server batching with Identity columns fails for image, text, and ntext columns (#4478)
- Shadow Property - ChangeTracker Modified State (#4474)
- SqlitePropertyBuilderExtensions have wrong generic constraints on PropertyBuilder extensions (#4469)
- Setting principal key should run fk discovery convention (#4451)
- SQL Server bulk insert doesn't allow inserting varchar column values longer than 1 character (#4399)
- Calling ICollection<>.Contains() with a nested propery throws an InvalidOperationException (#4394)
- OnModelCreating : ValueGenerated.OnAddOrUpdate results in ValueGeneratedOnAdd() (#4328)
- Migration dropping foreign key and re-creating (#4325)
- Only discover properties with public getter and public/private/etc. setter (#4314)
- RevEng: generated props .HasMaxLength(x).HasColumnType("varchar") create varchar(1) columns in DB (#4312)
- Specified cast is not valid (#4308)
- Query optimization: Remove unnecessary conditionals and casts from generated SQL (#4304)
- Query: ICollection<>.Contains() with a sub query throws SqlException (#4302)
- Prevent DbContext.Set() from creating sets for types not in the model (#4301)
- dnx ef dbcontext scaffold generates improper WithMany definitions on related model? (#4298)
- Mapping column to UInt32 throws an invalid cast exception (#4287)
- Configuring default value with fluent API doesn't support enum value without explicitly casting to int (#4286)
- error mapping sql types in derived types (#4251)
- TPH does not enforce unique discriminator values (#4170)
- Scaffold a subset of tables - silently ignores / skips tables that cannot be found (#4168)
- EntityFramework.Commands don't support dotnet5.4 framework (#4143)
- Unable to add EntityFramework.Relational NuGet package to PCL (#4102)
- InvalidCastException when filtering a projected list (#4094)
- Inserted entities has different ID (DB vs instance) after SaveChanges (#4080)
- TPH: Validate shared columns and constraints (#4074)
- Migration fails for class with multiple self references ([#4069](#4...
7.0.0-rc1
Features
- A way to use custom migrations directory? (#3243)
- DNX Commands: Add --json switch for tool-consumable output (#2883)
- DNX Commands: Verbose switch (#2871)
- RevEng: allow the user to select which tables from the database to use (#2751)
- DNX Commands: Enable DbContext and Startup in different projects (#2679)
- Align property discovery convention with type mapping (#2588)
- Code First: Implement inheritance support (#1704)
- Commands: Add IDbContextFactory (#639)
- .NET Native support (#623)
- Relational: TPH inheritance mapping pattern (#247)
Bugs Fixed
- ModelCleanupConvention: Collection was modified after the enumerator was instantiated (#3552)
- Regression? Foreign key properties now based on type name rather than property name (#3503)
- Colour migrations (#3450)
- Value generation error in case of inheritance (#3445)
- FromSql throws ArgumentNullException when passing a null parameter (#3432)
- RevEng: Generate partial classes (#3428)
- Build warnings from TelemetrySource in tests (#3422)
- Facing 'multiple assemblies with equivalent identity' on .NET 4.5 with latest build (#3407)
- Collection navigation properties without setter not detected (they were in EF6) (#3396)
- KeyAttributeConvention throws while composite keys used with inheritence (#3280)
- RevEng: datetime field with default constraint generates warning (#3250)
- RevEng: varchar column with default null constraint generates warning (#3249)
- RevEng: smallint column with default null constraint generates warning (#3248)
- RevEng: Unnecessary usings in entity class code (#3229)
- RevEng: Namespace is missing first character (#3228)
- RevEng: Provide default context name when unspecified (#3227)
- Inheritance :: error when adding Customer and VipCustomer to a db set in one "save changes" (#3161)
- Commands: Start a new namespace when generating migrations for a different context (#3124)
- RevEng: Remove our Razor dependency (#2947)
- Conventions: Key discovery not firing for added shadow properties (#2944)
- DbContext configured with an external DbConnection raises an exception when the DbConnection is already opened. (#2909)
- RevEng: Keys/AlternateKeys/Indexes (#2840)
- Relational: Add a validation rule to ensure unique column names (#2813)
- Multiple calls to FromSql with stored procedure results in errors (#2420)
- Commands: Discover contexts registered in the service provider (#2293)
7.0.0-beta8
Features
- RevEng: Allow absolute output paths (#3131)
- Support for Database Schema on the Model Builder (#2875)
- Migrations: Scaffold RestartSequence when StartValue changes (#2811)
- RevEng: Change output directory (and namespace) (#2750)
- Migrations: Get active provider (#2258)
- Migrations: Add ApplyMigrationsAsync (and related async methods) (#2212)
- Add support for execution of a raw command on the data store (#1863)
- Commands: Error gracefully on non-relational providers (#1652)
- Commands: Review what info we print on error (#1044)
Bugs Fixed
- SQLite RevEng: Context is always named ModelContext (#3164)
- NuGet Commands: No stack trace is shown (#3135)
- KeyDiscoveryConvention is not completely undone when configuring a different property as key (#3010)
- Possible null ref in RelationalParameter (#3002)
- "Malformed" SQL generated by MigrationSqlGenerator (#2950)
- foreign key in TPH (#2887)
- SqlServer: Error when applying a second migration - Issue with default values on bit columns (#2802)
- Remove-Migration does not delete file from *.csproj (#2690)
- additional migration tries to redefine existing identity columns resulting in incorrect T-SQL syntax (#2070)
7.0.0-beta7
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
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
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
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
7.0.0-beta2
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)