从默认的mvc应用程序数据库中删除用户

时间:2017-05-28 14:50:37

标签: c# asp.net .net asp.net-mvc asp.net-mvc-4

我正在尝试从数据库中删除已存在的用户,该数据库是在创建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不会中断并且不会显示任何错误,但用户仍在数据库中。如何删除它?

3 个答案:

答案 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);
            }       
        }