2017-05-28 144 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); 
      } 


    } 
相關問題