繁体   English   中英

如何在实体框架核心中使用私有属性更新 Model?

[英]How To Update A Model With Private Properties in Entity Framework Core?

我有一个 model 在 Id 属性上有一个私有设置器:

public class Guest
{
    public Guid GuestId { get; private set; } = Guid.NewGuid();
}

Controller 功能是:

public ActionResult UpdateGuest([FromBody] Guest guest)
{
    _db.Guests.Update(guest);
    _db.SaveChangesAsync();

    return Ok();
}

当我调用 controller 但是它使用新的 GuestId Guid 创建 class 的新实例,因此无法更新属性。

如果我删除了私有设置器,那么更新功能就可以正常工作,但我觉得更新 model 的想法并不是真正的最佳实践。

一种解决方案可能是在表单主体中采用通用 json object 然后更新每个单独的属性,但我认为它并不是真正可扩展的,因为每个 model 更新都意味着更新控制器。

解决这个问题的最佳方法是什么? 谢谢!!!

对于FromBody ,它使用Newtonsoft.Json将 json 反序列化为 Object。

Newtonsoft.Json反序列化私有属性,你可以试试下面;

public class Guest
{
    [JsonProperty]
    public Guid GuestId { get; private set; } = Guid.NewGuid();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM