Why is the IdentityUser
class in the Microsoft.AspNet.Identity.EntityFramework
package instead of being included in the Microsoft.AspNet.Identity.Core
package?
Why should it depend on EntityFramework? It seems to be a simple class.
What am I missing?
I typically separate by Data layer from my DAL. Adding a dependency to EntityFramework
for the IdentityUser
class seems a bit much.
The design of the core of Identity is not coupled to EF or to any specific shape of user and role types. Everything is abstracted by the stores. In fact, for any given persistence provider, the types don't even need to be POCOs at all!
For Identity 3.0 we considered having our current types in core (in fact, at some point we had them there) but we got pretty solid feedback from people familiar with other persistence frameworks that although those types can comply to a common definition of "POCO", they are very EF specific.
We also considered having base classes in core that we would extend for EF in the EF package. We landed where we are because there didn't seem to be enough benefit in this. It was between adding the complexity of an extra layer of inheritance (more complexity would make it easier for us to introduce bugs) vs. the fact that the types themselves aren't that complex and that persistence provider writers who want to take them as a starting point are welcome to copy & paste the code.
You asked:
This is because the out-of-the-box implementation for Identity actually depends on Entity Framework.
The ASP.NET site has the following article: Overview of Custom Storage Providers for ASP.NET Identity which indicates:
The same page also should answer your question in the comments about creating a custom implementation of
IUser
: