如何在ASP.NET MVC中使用EntityFramework6.Npgsql从Postgres数据库获取数据?

问题描述

我正在使用Npgsql和EntityFramework6.Npgsql在ASP.NET MVC中创建一个登录应用程序,我想实现一个通过标识号检索密码的功能,即用户单击“我忘记了密码”按钮,那么他必须输入标识号,程序会检查该标识号是否存在或正确,然后显示用于更改密码的用户信息。

用户的模型类:

public partial class user
{

    public int id { get; set; }
    [display(Name = "Id number")]
    [required(AllowEmptyStrings = false,ErrorMessage = "It's necessary the id number")]
    public string idnumber { get; set; }

    [display(Name = "Name")]
    [required(AllowEmptyStrings = false,ErrorMessage = "It's necessary the name")]
    public string fname { get; set; }

    [display(Name = "Last name")]
    [required(AllowEmptyStrings = false,ErrorMessage = "It's necessary the last name)]
    public string lname { get; set; }

    [display(Name = "Password")]
    [required(AllowEmptyStrings = false,ErrorMessage = "It's necessary a pass")]
    [DataType(DataType.Password)]
    [MinLength(6,ErrorMessage = "Min six letters")]
    public string pass { get; set; }

    [display(Name = "Confirm pass")]
    [DataType(DataType.Password)]
    [Compare("pass",ErrorMessage = "The pass don't match")]
    public string check_pass { get; set; }

    [display(Name = "Email")]
    [required(AllowEmptyStrings = false,ErrorMessage = "It's necessary an email")]
    [DataType(DataType.EmailAddress)]
    public string email { get; set; }
}

因此,在[HttpGet]中,标识号是由程序获得的,而[HttpPost]中的信息是由标识号更改的,或者应该这样做。

[HttpGet]
    public ActionResult recoverPass()
    {
        return View();
    }

    [HttpPost]
    public ActionResult recoverPass(userPassRecover user)
    {    
        using(inventarioEntitiesDBA dc = new inventarioEntitiesDBA())
        {
            var u = dc.user.Where(a => a.cedula == user.cedula).FirstOrDefault();

            dc.user.Remove(u);
            dc.user.Add(user);
            dc.SaveChanges();

            return View();
        }
    }

我真的不知道如何进行这项工作,任何建议都值得赞赏

解决方法

如果有人遇到相同的问题:

    [HttpGet]
    public ActionResult recoverPass()
    {

        return View();
    }

    [HttpPost]
    public ActionResult recoverPass(userRecoverPass user)
    {
        using (inventarioEntitiesDBA dc = new inventarioEntitiesDBA())
        {
            var u = dc.user.Where(a => a.idnumber == user.idnumber)?.FirstOrDefault();

            if (u != null)
            {
                u.pass = user.newpass;
                dc.SaveChanges();
            }

            return RedirectToAction("login");
        }
    }

“ userRecoverPass”对象是其中仅要求信息来执行密码更改的模型。