我正在尝试从数据库中删除已存在的用户,该数据库是在创建MVC应用程序时自动创建的 该数据库由表格组成:
AspNetUsers
AspNetUserRoles
AspNetUserLogins
AspNetUserClaims
AspNetRoles
在我的代码中,它看起来像这样:
var user = new ApplicationUser { UserName = model.email, Email = model.email };
var context = new ApplicationDbContext();
context.Users.Attach(user);
context.Users.Remove(user);
context.SaveChangesAsync();
return RedirectToAction("OperationSuccess", "Account");
我也试过这个:
var user = new ApplicationUser { UserName = model.email, Email = model.email };
var context = new ApplicationDbContext();
UserManager.DeleteAsync(user);
但它根本没有帮助。应用程序itselt不会中断并且不会显示任何错误,但用户仍在数据库中。如何删除它?
答案 0 :(得分:1)
试试这段代码:
public async Task<IdentityResult> DeleteUser(string email)
{
var user = UserManager.Users.FirstOrDefault(x => x.Email == email);
if(user == null) return null;
var result = await UserManager.DeleteAsync(user); //here result has two properties Errors and Succeeded.
return result;
}
此外,您的代码无法正常工作,因为您自己创建了对象,并且尽管从数据库中获取数据,但您自己只分配了两个属性。
答案 1 :(得分:0)
您好我认为您有一些版本问题,而且您似乎需要为DeleteAsync方法提供一个额外的参数。
请参阅以下链接,因为他们有同样的问题并已解决。
https://stackoverflow.com/a/24594440/3397630
希望它也可以为您提供解决方案。
由于
KARTHIK
答案 2 :(得分:0)
希望以下代码可以帮助您解决问题
[HttpPost]
public async Task<ActionResult> Delete(string userId)
{
// Check for for both ID and exit if not found
if (String.IsNullEmpty(userId))
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var user = UserManager.Users.SingleOrDefault(u => u.Id == Userid);
//在UserStore中查找用户
// If not found, exit
if (user == null)
{
return HttpNotFound();
}
var results = await UserManager.DeleteAsync(user); // Remove user from UserStore
// If the statement is a success
if (results.Succeeded)
{
// Redirect to Users page
return RedirectToAction("Index", "Users");
}
else
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
}