使用通用存储库实体框架核心仅更新一些模型字段

时间:2018-06-14 20:22:51

标签: c# asp.net-core entity-framework-core asp.net-core-2.0

我有以下用户模型:

Model Users.cs

    [Key]
    [Column("cod")]
    public int Cod { get; set; }
    [Column("nome")]
    [StringLength(120)]
    public string Nome { get; set; }
    [Column("sobrenome")]
    [StringLength(80)]
    public string Sobrenome { get; set; }
    [Column("email")]
    [StringLength(60)]
    public string Email { get; set; }
    [Column("password")]
    [StringLength(20)]
    public string Password { get; set; }

我的ViewModel只有View中显示的数据 UsersViewModel.cs

    public int Cod { get; set; }
    public string Nome { get; set; }
    public string Sobrenome { get; set; }

我的通用存储库如下所示:

    public void Update(TEntity obj)
    {
        Db.Entry(obj).State = EntityState.Modified;
        Db.SaveChanges();
    }

在我的控制器中它看起来像这样:

    [HttpPost]
    public IActionResult SalvaPerfil([FromBody] UsersViewModel usersViewModel)
    {
        if (ModelState.IsValid)
        {
            var user = Mapper.Map<UsersViewModel, Users>(usersViewModel);
            _PetApp.Update(user);
            return Content("fim...");
        }
        return Content("ERRO");
    }

问题是电子邮件和密码字段在数据库中写为NULL,我不想在另一个视图中更改电子邮件和密码值。

我看到了这篇文章,但它不是Generic Repository,我无法实现它。

How to update only one field using Entity Framework?

在这种情况下,我是否需要为此更改创建自定义方法?或者有没有办法只更改ViewModel中的字段?

谢谢!

0 个答案:

没有答案