【问题标题】:Delete user from default mvc application database从默认 mvc 应用程序数据库中删除用户
【发布时间】:2017-10-28 22:37:17
【问题描述】:

我正在尝试从数据库中删除一个已经存在的用户,该用户是在创建 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);

但这根本没有帮助。应用程序本身没有中断,也没有显示任何错误,但用户仍在数据库中。如何删除?

【问题讨论】:

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


【解决方案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;
} 

此外,您的代码无法正常工作,因为您自己创建对象并自己仅分配两个属性,尽管从数据库中获取数据。

【讨论】:

  • 谢谢,但很遗憾,这不会对数据库进行更改。
  • 你检查结果变量是否有错误?
  • - result Id = 415, Status = WaitingForActivation, Method = "{null}", Result = "{Not yet computed}" System.Threading.Tasks.Task&lt;Microsoft.AspNet.Identity.IdentityResult&gt; 并且例外为空。 @pratek-pandey
  • 需要添加结果var result = DeleteUser(email).Result
【解决方案2】:

您好,我认为您有一些版本控制问题,您似乎需要为 DeleteAsync 方法提供一个额外的参数。

请参考以下链接,因为他们遇到了同样的问题并已解决。

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

希望它也能为您的解决方案提供一些想法。

谢谢

卡提克

【讨论】:

  • 什么额外的参数?
【解决方案3】:

希望下面的代码能帮助您解决问题

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

【讨论】:

    猜你喜欢
    • 2010-10-06
    • 1970-01-01
    • 2011-01-21
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    相关资源
    最近更新 更多