What are the main differences between EF6 and EF Core?
Quick Answer
EF Core is a rewrite: cross-platform, faster, more database providers, better LINQ translation, batching of SaveChanges, and features EF6 never had (global query filters, owned types, split queries, ExecuteUpdate). It dropped some EF6 features — the EDMX designer, some complex mapping, ObjectContext, lazy loading needed a package at first.
EF Core is a from-scratch rewrite, not an upgrade. It's cross-platform, noticeably faster, supports more databases, has much better LINQ-to-SQL translation, and batches multiple changes into one round trip on SaveChanges. It also added things EF6 never had — global query filters, owned types, split queries, bulk ExecuteUpdate. On the other side, it dropped the EDMX designer and some of the more exotic mapping, and early versions were missing lazy loading and many-to-many, which came back later. For anything new it's EF Core.
- EF Core gains: cross-platform, in-memory batching, compiled queries, better change-tracker perf, keyless entities, alternate keys, shadow properties.
- EF6 had that EF Core added later or differently: lazy loading (proxies package), many-to-many without a join entity (EF Core 5+), TPT/TPC inheritance (Core 5/7).
- Still EF6-only: EDMX visual designer,
EntityDataSource, certain interception points. - New projects use EF Core; EF6 is maintained but not evolving.