Should You Upgrade Your Project from EF6 to EF Core?

Today, I received a great question from a customer:

Any recommendations on whether I should keep using EF6 or switch to EF Core?

He’s already using EF6 with our Entity Framework Extensions library.

Back in the early versions of EF Core, I always recommended sticking with EF6 even for new development:

  • EF Core 2 had too many client-side evaluations, often loading entire tables instead of filtering at the database level.
  • EF Core 3 was still missing many essential features.

But hey, EF Core 9 is out now. So, has my opinion changed?

Should You Use EF Core for a New Project?

Even if your team is more familiar with EF6, for any new project, I strongly recommend starting with EF Core. Here’s why:

  • EF Core is much faster than EF6, especially when dealing with large amounts of data.
  • 🧓 Senior developers will appreciate working with something modern and actively maintained.
  • 🧑‍💻 New developers are more likely to know EF Core already—it’s what they’ve learned in school or on their previous job.
  • 🧰 EF Core comes with new features that don’t exist in EF6, like value converters, shadow properties, and better support for async/await.
  • 💾 It offers better support for multiple databases, including SQLite, PostgreSQL, MySQL, and others—right out of the box.
  • 🧪 Testing is easier, thanks to the in-memory database provider and smoother integration with dependency injection.
  • 🔁 Query translation has improved a lot. Complex LINQ queries are more likely to be fully translated to SQL.
  • 🧼 Cleaner code and better configuration APIs make the developer experience smoother.
  • 📦 Third-party tools and libraries are moving forward with EF Core, so you’ll have better long-term support.

If you’re starting from scratch, it makes sense to build on a framework designed for the future—not the past.

Even for a personal project, if you really like EF6, switching to EF Core can only be beneficial for you in the long term.

Should You Upgrade an Existing Project to EF Core?

If it’s a personal project and you’re doing it for fun or learning—go for it if it’s not a critical project.

But if it’s a business project?

My answer is a strong NO ❌: don’t risk breaking something that’s already working well.

💡 It’s worth mentioning: EF6 now supports .NET (including .NET Core and .NET 6/7/8/9 etc,), so you’re not stuck on .NET Framework if you stick with EF6.

One thing I’ve learned while supporting Html Agility Pack—one of the most downloaded .NET libraries with over 200 million downloads—is that even the tiniest, most innocent-looking change can break things unexpectedly. Every time we tweak something, someone ends up reporting a bug 😅

Back to EF: EF Core isn’t an upgrade of EF6—it’s a completely different framework with its own set of rules.

Upgrading means:

  • 🔄 Redefining your entire model – You can’t just reuse your EF6 DbContext and entities without changes. You’ll likely need to tweak attributes, conventions, and relationships.
  • ⚙️ Rewriting all your configurations – Fluent API setups often change in EF Core, and some behaviors don’t map 1:1.
  • 🧱 Rebuilding all your migrations – EF Core uses a different migration system. You’ll likely need to regenerate and manually adjust them if you want to keep history or reapply schema changes.
  • 🧪 Retesting everything – Even if your app compiles, that doesn’t mean it behaves the same. Subtle behavior differences can cause data inconsistencies or regressions.

And there’s more. Even something as simple as handling explicit values is different.

In EF6, explicit values for generated properties were always ignored. In EF Core? It’s a whole different story. You can learn more about it here:

Sounds manageable? All it takes is one method behaving differently, and weeks later, you realize your data has been silently corrupted. 😬

Conclusion

So what’s my final recommendation? Still a big NO 🚫. Stick with EF6—especially if you’re already using our Entity Framework Extensions library.

Why switch?

Because EF Core is “faster”? Our library already gives you similar or better performance using:

Because you want to be “up to date”? EF6 is known to be very stable. You’ve probably been using it in your project for the last 10 years without issues. And again—EF Core isn’t an upgrade. It’s a completely different library with different behaviors and rules.

Sometimes, sticking with what is already working is the smartest move you can make 👍

I’m sure your team and your time can be better spent building features that add value for your customers.

Scroll to Top