Can SimpleMembership be used with EF model-first? When I try it, I get "Unable to find the requested .NET Framework Data Provider" when I call WebSecurity.InitializeDatabaseConnection.
To put it another way: I can't get the call to WebSecurity.InitializeDatabaseConnection
to work when the connection string employs the System.Data.EntityClient
provider (as it does when using the model-first paradigm).
To repro the issue, create an MVC 4 app, and replace the code-first UserProfile entity class (which you get for free with the MVC 4 template) with a model-first User class that you have created in the Entity Designer:
- Create an MVC 4 app in VS 2012 and add a new, blank Entity Data Model.
- Add a new Entity named
User
to the model, with fields forId,
UserName, and FullName
. So, at this point, theUser
data entity is mapped to aUsers
table and is accessed via a funky connection string that employs theSystem.Data.EntityClient
provider. - Verify that the EF can access the
User
entity. One easy way to do that is to scaffold out a Users controller based on the User table and its associated DbContext. - Edit the
AccountModels.cs
file to remove theUserProfile
class and its associatedUsersContext
class. Replace the references to the (now missing)UserProfile
andUsersContext
classes with references to your new User class and its associatedDbContext
class. - Move the call to InitializeDatabaseConnection from the InitializeSimpleMembershipAttribute filter class to the Application_Start method in Global.asax.cs. While you're at it, modify the arguments to use your new User entity's connection string, table name, and UserId column name.
- Delete the (no longer used)
InitializeSimpleMembershipAttribute
class and the references to it.
When you run the repro, it will get an Exception at the call to InitializeDatabaseConnection.
Bob