I am using Simplie MemberShip Provider on my ASP NET MVC 4 App. And have some error when i connect user with role. That steps what i do:
1.Add providers on web.config:
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
<providers>
<clear />
<add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
</providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear />
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="ContextDataModel" />
</providers>
</sessionState>
2. Initialize DB with next code:
WebSecurity.InitializeDatabaseConnection("SomeDataBaseModel", "webpages_Users", "Id", "Name", true);
3. Create user:
membership.CreateUserAndAccount(user, userPassword);
Where membership is SimpleMembershipProvider membership = (SimpleMembershipProvider)Membership.Provider;
Create role:
roles.CreateRole(userRole);
Where roles is SimpleRoleProvider roles = (SimpleRoleProvider)Roles.Provider;
Try connect User with Role:
roles.AddUsersToRoles(new[] { user }, new[] { userRole });
And on this step i have Exception:
The INSERT statement conflicted with the FOREIGN KEY constraint "webpages_Roles_webpages_Users_Source". The conflict occurred in database "SomeDataBase", table "dbo.webpages_Roles", column 'RoleId'.
The statement has been terminated.
I checked the user and role. They exist. And if i connect them manually, the error does not occur. I'm using MS SQL Server database. Any ideas what is going on here? Maybe need more information to understand this error?
UPD: user, userPassword and userRole is string constants
UPD2: This error occurs if the database contains data. If the database is initially empty, no error occurs in step 5.
I corrected this error.
First of all check your database schema.
The columns
UserIdandRoleIdin tablewebpages_UsersInRolesmust ordered like that: First columnUserId, Second columnRoleId. After check table relationships betweenwebpages_Rolesandwebpages_Users(this is table that you define for user id, login and another information). They must be correct.If you use Code-First Model сheck your model for the correctness of the relationships between these tables.
For me correct model looks like that: