簡體   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