All your versions are belong to us

Totally made up conversations about choosing Entity Framework version numbers

These conversations are a work of fiction. Any resemblance of to real Microsoft employees, either past or present, is purely coincidental.

EF1

A: So this Entity Framework thing we're shipping. What version is it?
B: It's version 1. Duh.
A: So the assemblies are stamped with 1.0?
B: Err. Well, no. The assemblies are in .NET Framework, so they are versioned as 3.5.
A: So this is really version 3.5? Isn't that weird for a v1?
B: I guess we shouldn't give it any version, since it's in .NET Framework.
A: Okay...
B: How about, "ADO.NET Entity Framework for .NET Framework 3.5 Service Pack 1"?
A: Catchy!

EF4

A: So this Entity Framework thing we're shipping. What version is it?
B. It's version 2. Duh.
A: So the assemblies are stamped with 2.0?
B: Err. Well, no. The assemblies are in .NET Framework, so they are versioned as 4.0.
A: So this is really version 4.0? Isn't that weird for a v2?
B: I guess we shouldn't give it any version, since it's in .NET Framework.
A: Err. We've already been telling customers that it's EF2.
B: Hmm.
A: Also, customers are referring to "ADO.NET Entity Framework for .NET Framework 3.5 Service Pack 1" as EF1.
B: What!? Can't we stop them? We gave it a catchy name for a reason!
A: Customers will be customers...
B: Fine. Fine. EF4 it is.
A: Four?
B: Yes. it's in .NET 4 so it's EF4.
A: But...

Code First

A: So this Entity Framework Code Only thing we're shipping. What's it called?
B: It's a preview right?
A: Yes.
B: And it's a preview of new features, right?
A: Yes...
B: So call it a "Feature Community Technology Preview". That's the catchy name we have for previews.
A: Why not just "Preview"?
B: Because otherwise people won't know it's for the community, uses technology, and has features.
A: Right. Got it. So it's "ADO.NET Entity Framework Community Technology Preview"?
B: Yep. Catchy and informative!
A: Hmm.
B: Hang on a minute. What is "Code Only" anyway?
A: Well it describes how only code is needed to specify database mappings.
B: But we have "Database First" and "Model First". Can't we have "Code First" too? It would be really catchy!
A: But that implies you must write the code first.
B. Yeah, but "Code First" is catchy!
A: But...okay, fine. What about the new DbContext API surface? How we refer to that?
B: You can't give it a name. New brands are bad.
A: How do we refer to it?
B: Call it "productivity improvements".
A: Nice! Catchy and it doesn't mean anything!

EF 4.1

A: So this Entity Framework thing we're releasing on NuGet. What version is it?
B: It's a minor release that builds on EF4, right?
A: Yep.
B: Then call the package EntityFramework and version it as 4.1.
A: Are you sure?
B: Yes. Doesn't it make sense?
A: No, no. It does make sense. I just wasn't expecting it to!

EF 4.2

A: I'm going to go out on a limb here. Can it be EF 4.2?
B: Ship-it!
A: I can't believe this is happening. It makes so much sense!

EF 4.3

A: Rinse and repeat?
B: Yep.
A: Awesome!

EF5

A: So this Entity Framework thing we're shipping. What version is it?
B. So it's aligned with .NET 4.5, right?
A: Yes.
B: So EF 4.5 then?
A: But it's a major release and semantic versioning says it should be 5.0.
B: Fine. Call it EF5, then. I miss the catchy names we used to have. But hey, we're living in a NuGet world!
A: Awesome!

EF6

A: EF6?
B: Yes.

EF Core 1.0

A: So this new Entity Framework thing we're building. What do we call it?
B: Entity Framework?
A: But it's a different code base and works differently. We've been calling it EF Lite.
B: No, no. New brands are bad. It must be called Entity Framework.
A: Won't that be confusing and send the wrong message?
B: Just bump the major version.
A: So, EF7?
B: Yep.
A: But... Okay.
B: No, wait. We just decided, everything Project K will now be "Core".
A: So, EF Core?
B: Yep. But you have to change the package name as well. Some people can't tell EntityFramework comes from Microsoft.
A: Microsoft.EFCore?
B: Not catchy enough. How about, "Microsoft.EntityFrameworkCore"?
A: So be it. By the way, you do realize we're not actually really ready for a 1.0 release?
B: Does it work.
A: Well, yeah. But there's a lot of stuff missing.
B: It must ship!

EF Core 1.1 - 3.1

A: Can we use semantic versioning and make sane version number changes?
B: Why would we not do?
A: I love new Microsoft.

EF Core 5.0

A: So, we're not calling ".NET Core" ".NET Core" anymore?
B: Nope.
A: What about EF Core.
B: It can stay the same.
A: Cool. What version number?
B: Everything in .NET 5 is version 5.
A: But EF Core isn't technically even part of .NET 5. It should be just EF Core 4.0.
B: Everything in .NET 5 is version 5.
A: Five might be confusing because we already had an EF5. And a six. And kind of a seven. Maybe EF Core 8?
B: Everything in .NET 5 is version 5.
A: Well, it given our history, it certainly could be worse!


This page is up-to-date as of March 26th, 2020. Some things change. Some things stay the same. Use your noggin.