存储过程有效并删除了我想要的内容,但删除后仍然出现此错误:
数据读取器与指定的“AMSIdentity.Models.RemoveRoleFromUserViewModel”不兼容。类型的成员“RoleId”在数据读取器中没有同名的对应列。
我需要在上面运行没有此错误的代码
此代码使用 ASP.NET MVC 5 和 EF6 代码优先方法;我尝试使用此代码,但删除后总是抛出此错误。
这是我使用的操作方法
public ActionResult RemoveRoleFromUserConfirmed(string UserName, string RoleId)
{
if (UserName == null && RoleId == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
SqlParameter param1 = new SqlParameter("@RoleId", RoleId);
SqlParameter param2= new SqlParameter("@UserName", UserName);
var remove = Identitydb.Database.SqlQuery<RemoveRoleFromUserViewModel>("admin.sp_RemoveUserFromRole @RoleId, @UserName",
((ICloneable)param1).Clone(),
((ICloneable)param2).Clone()).ToArray().ToList().FirstOrDefault();
if (remove == null)
{
return HttpNotFound();
}
return RedirectToAction("Roles");
}
这是我使用的视图模型:
public class RemoveRoleFromUserViewModel
{
[Key]
[DisplayName("Role Id")]
public string RoleId { get; set; }
[DisplayName("Username")]
public string UserName { get; set; }
}
这是存储过程代码:
ALTER PROCEDURE [Admin].[sp_RemoveUserFromRole]
@RoleId NVARCHAR(50),
@UserName NVARCHAR(50)
AS
BEGIN
DELETE FROM AspNetUserRoles
WHERE UserId = (SELECT Id
FROM AspNetUsers
WHERE UserName = @UserName)
AND RoleId = @RoleId
END
我希望这段代码会删除特定用户的角色。