Я использую Simplie MemberShip Provider в своем приложении ASP NET MVC 4. И есть некоторые ошибки, когда я подключаю пользователя с ролью.
Вот шаги, которые я делаю:
1.Добавить провайдеров на 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. Инициализируйте БД следующим кодом:
WebSecurity.InitializeDatabaseConnection("SomeDataBaseModel", "webpages_Users", "Id", "Name", true);
3. Создать пользователя:
membership.CreateUserAndAccount(user, userPassword);
Где membership
равно SimpleMembershipProvider membership = (SimpleMembershipProvider)Membership.Provider;
Создать роль:
roles.CreateRole(userRole);
Где roles
равно SimpleRoleProvider roles = (SimpleRoleProvider)Roles.Provider;
Попробуйте подключить пользователя с ролью:
roles.AddUsersToRoles(new[] { user }, new[] { userRole });
И на этом шаге у меня есть исключение:
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.
Я проверил пользователя и роль. Они существуют. И если я подключаю их вручную, ошибка не возникает.
Я использую База данных MS SQL Server .
Есть идеи, что здесь происходит? Может быть, нужно больше информации, чтобы понять эту ошибку?
UPD : user
, userPassword
и userRole
- строковые константы
UPD2 : эта ошибка возникает, если база данных содержит данные. Если база данных изначально пуста, на шаге 5 не возникает ошибок.