从默认mvc应用程序数据库中删除用户
我想从创建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不会中断并且不显示任何错误,但用户仍在数据库中。我如何删除它?
试试这个代码:
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;
}
而且,你的代码无法正常工作,因为你是你自己创建的对象,尽管从数据库中获取数据的分配只有两个自己的属性。
谢谢,但不幸的是,这不会对数据库进行更改。 –
你检查了结果变量来检查错误吗? –
' - 结果ID = 415,状态= WaitingForActivation,方法=“{空}”,结果=“{尚未计算}”System.Threading.Tasks.Task
嗨我认为你有一些版本问题,似乎你需要给DeleteAsync方法一个额外的参数。
请参阅下面的链接,因为他们有相同类型的问题并解决它。
https://stackoverflow.com/a/24594440/3397630
希望它可以给你一些想法对您的解决方案了。
感谢
KARTHIK
什么额外的参数? –
希望下面的代码将帮助您解决您的问题
[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);
}
}
什么IdentityResult? * var identityResult = await UserManager.DeleteAsync(user); *应该有Errors属性中的信息:https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.identityresult(v=vs。 108).aspx –