2017-05-28 64 views
2

我想从创建MVC应用程序时自动创建的数据库中删除已存在的用户。
数据库由表:从默认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

什么IdentityResult? * var identityResult = await UserManager.DeleteAsync(user); *应该有Errors属性中的信息:https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.identityresult(v=vs。 108).aspx –

回答

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; 
} 

而且,你的代码无法正常工作,因为你是你自己创建的对象,尽管从数据库中获取数据的分配只有两个自己的属性。

+0

谢谢,但不幸的是,这不会对数据库进行更改。 –

+0

你检查了结果变量来检查错误吗? –

+0

' - 结果ID = 415,状态= WaitingForActivation,方法=“{空}”,结果=“{尚未计算}”System.Threading.Tasks.Task ' 而exeption是空值。 @ prateek-pandey –

0

嗨我认为你有一些版本问题,似乎你需要给DeleteAsync方法一个额外的参数。

请参阅下面的链接,因为他们有相同类型的问题并解决它。

https://stackoverflow.com/a/24594440/3397630

希望它可以给你一些想法对您的解决方案了。

感谢

KARTHIK

+0

什么额外的参数? –

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);// Look for user in the UserStore 

     // If not found, exit 
     if (user == null) 
     { 
      return HttpNotFound(); 
     } 



      var results = await UserManager.DeleteAsync(user); // Remove user from UserStore 

      // If the statement is success 

      if (results.Succeeded) 
      { 
       // Redirect to Users page 
       return RedirectToAction("Index", "Users"); 
      } 
      else 
      { 
       return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
      } 


    } 
相关问题