我正在使用标准WebSecurity
功能创建管理角色 - 管理页面。
我收到了这个错误
无法插入外键值,因为不存在相应的主键值。 [外键约束名称= 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);
}
}
}
}
答案 0 :(得分:0)
不确定,但听起来您正在尝试手动创建用户和角色表。
您是否尝试过运行aspnet_regsql.exe?您可以在“%WINDIR%\ Microsoft.NET \ Framework \ v4.0.30319 \”目录中找到它。它将打开一个向导,使用相同“%WINDIR%\ Microsoft.NET \ Framework \ v4.0.30319 \”目录中的SQL脚本创建相应的表。