The following table compares the features available(1) in EF Core and EF6.x.
It is intended to give a high level comparison and does not list every feature, or attempt to give details on possible differences between how the same feature works.
| Creating a Model | EF6.x | EF Core 1.0.0 |
|---|---|---|
| Basic modelling (classes, properties, etc.) | Yes | Yes |
| Conventions | Yes | Yes |
| Custom conventions | Yes | Partial |
| Data annotations | Yes | Yes |
| Fluent API | Yes | Yes |
| Inheritance: Table per hierarchy (TPH) | Yes | Yes |
| Inheritance: Table per type (TPT) | Yes | |
| Inheritance: Table per concrete class (TPC) | Yes | |
| Shadow state properties | Yes | |
| Alternate keys | Yes | |
| Many-to-many: With join entity | Yes | Yes |
| Many-to-many: Without join entity | Yes | |
| Key generation: Database | Yes | Yes |
| Key generation: Client | Yes | |
| Complex/value types | Yes | |
| Spatial data | Yes | |
| Graphical visualization of model | Yes | |
| Graphical drag/drop editor | Yes | |
| Model format: Code | Yes | Yes |
| Model format: EDMX (XML) | Yes | |
| Reverse engineer model from database: Command line | Yes | |
| Reverse engineer model from database: VS wizard | Yes | |
| Incremental update model from database | Yes |
| Querying Data | EF6.x | EF Core 1.0.0 |
|---|---|---|
| LINQ: Simple queries | Stable | Stable |
| LINQ: Moderate queries | Stable | Stabilizing |
| LINQ: Complex queries | Stable | In-Progress |
| LINQ: Queries using navigation properties | Stable | In-Progress |
| “Pretty” SQL generation | Poor | Yes |
| Mixed client/server evaluation | Yes | |
| Loading related data: Eager | Yes | Yes |
| Loading related data: Lazy | Yes | |
| Loading related data: Explicit | Yes | |
| Raw SQL queries: Model types | Yes | Yes |
| Raw SQL queries: Un-mapped types | Yes | |
| Raw SQL queries: Composing with LINQ | Yes |
| Saving Data | EF6.x | EF Core 1.0.0 |
|---|---|---|
| SaveChanges | Yes | Yes |
| Change tracking: Snapshot | Yes | Yes |
| Change tracking: Notification | Yes | Yes |
| Accessing tracked state | Yes | Partial |
| Optimistic concurrency | Yes | Yes |
| Transactions | Yes | Yes |
| Batching of statements | Yes | |
| Stored procedure | Yes | |
| Detached graph support (N-Tier): Low level APIs | Poor | Yes |
| Detached graph support (N-Tier): End-to-end | Poor |
| Other Features | EF6.x | EF Core 1.0.0 |
|---|---|---|
| Migrations | Yes | Yes |
| Database creation/deletion APIs | Yes | Yes |
| Seed data | Yes | |
| Connection resiliency | Yes | |
| Lifecycle hooks (events, command interception, ...) | Yes |
| Database Providers | EF6.x | EF Core 1.0.0 |
|---|---|---|
| SQL Server | Yes | Yes |
| MySQL | Yes | Paid only, unpaid coming soon (2) |
| PostgreSQL | Yes | Yes |
| Oracle | Yes | Paid only, unpaid coming soon (2) |
| SQLite | Yes | Yes |
| SQL Compact | Yes | Yes |
| DB2 | Yes | Yes |
| InMemory (for testing) | Yes | |
| Azure Table Storage | Prototype | |
| Redis | Prototype |
| Application Models | EF6.x | EF Core 1.0.0 |
|---|---|---|
| WinForms | Yes | Yes |
| WPF | Yes | Yes |
| Console | Yes | Yes |
| ASP.NET | Yes | Yes |
| ASP.NET Core | Yes | |
| Xamarin | Coming soon (3) | |
| UWP | Yes |
Footnotes:
(1) : As of 2016/10/18
(2) : Paid providers are available, unpaid providers are being worked on. The teams working on the unpaid providers have not shared public details of timeline etc.
(3) : EF Core is built to work on Xamarin when support for .NET Standard is enabled in Xamarin.