Я создаю страницу «Управление ролями» - администратором с помощью стандартной функции WebSecurity
.Ошибка SQL: значение внешнего ключа не может быть вставлено, потому что соответствующее значение первичного ключа не существует
Я получаю эту ошибку
Foreign key value cannot be inserted because a corresponding primary key value does not exist. [Foreign key constraint name = fk_UserId]
на следующей строке кода:
if(!Roles.IsUserInRole(userNames[0], roleNames[0])){
Roles.AddUsersToRoles(userNames, roleNames);
}
Мое понимание, что отдельные таблицы должны быть связаны с userId
колонке. И они. Я использую WebMatrix 2 и Razor для разработки.
Любые идеи или решения от вас SQL Masterminds? Большое спасибо!
Ниже приведен фрагмент кода, как я это делаю!
@{
var roleName = "";
string[] userNames = new string[1];
string[] roleNames = new string[1];
var db = Database.Open("ResearchA");
var selectQueryString = "SELECT UserId, username FROM [usernames]";
if(IsPost){
// Create new role
if(!Request["buttonCreateRole"].IsEmpty()){
roleName=Request["textRoleName"];
if(!Roles.RoleExists(roleName) && !roleName.IsEmpty()){
Roles.CreateRole(roleName);
}
}
// Delete role
if(!Request["buttonDeleteRole"].IsEmpty()){
roleName=Request["textRoleName"];
if(Roles.GetUsersInRole(roleName).Length == 0 && !roleName.IsEmpty()){
Roles.DeleteRole(roleName, true);
}
}
// Add user to role
if(!Request["buttonAddUserToRole"].IsEmpty()){
userNames[0] = Request["selectUserName"];
roleNames[0] = Request["selectRoleName"];
if(!Roles.IsUserInRole(userNames[0], roleNames[0])){
Roles.AddUsersToRoles(userNames, roleNames);
}
}
// Delete user from role
if(!Request["buttonDeleteUserFromRole"].IsEmpty()){
userNames[0] = Request["selectUserName"];
roleNames[0] = Request["selectRoleName"];
if(Roles.IsUserInRole(userNames[0], roleNames[0])){
Roles.RemoveUsersFromRoles(userNames, roleNames);
}
}
}
}
вы можете отправить больше информации, как доза Роли.AddUsersToRoles работает? кажется, что AddUsersToRoles должен принимать пользователя не userName и role [] not roleNames или что-то в этом роде. как это реализовано? –
Я _guessing_ один из элементов в 'userNames' не существует в базе данных (в таблице users), поэтому нарушится FOREIGN KEY в таблице соединений (которая соединяет пользователей и роли). –
Кроме того, вы _checking_ только первый пользователь/роль, но _adding_ потенциально несколько пользователей для нескольких ролей. Это намеренно? –