c# - 如何在 Entity Framework Core 中更新具有私有属性的模型?
问题描述
我有一个在 Id 属性上有一个私有设置器的模型:
public class Guest
{
public Guid GuestId { get; private set; } = Guid.NewGuid();
}
控制器功能是:
public ActionResult UpdateGuest([FromBody] Guest guest)
{
_db.Guests.Update(guest);
_db.SaveChangesAsync();
return Ok();
}
但是,当我调用控制器时,它会使用新的 GuestId Guid 创建该类的新实例,因此无法更新该属性。
如果我删除了私有设置器,那么更新功能就可以正常工作,但我觉得更新模型想法并不是真正的最佳实践。
一种解决方案可能是在表单主体中获取一个通用 json 对象,然后更新每个单独的属性,但我认为它并不是真正可扩展的,因为每次模型更新都意味着对控制器的更新。
解决这个问题的最佳方法是什么?谢谢!!!
解决方案
对于FromBody
,它用于Newtonsoft.Json
将 json 反序列化为 Object。
要Newtonsoft.Json
反序列化私有属性,您可以尝试以下方法;</p>
public class Guest
{
[JsonProperty]
public Guid GuestId { get; private set; } = Guid.NewGuid();
}
推荐阅读
- angular - 等待角度异步订阅
- c++ - 在 CLion 和 Cmake 中设置外部头文件和链接器库的问题
- python - 在不使用 Scikit learn 的情况下尝试 K-fold Random Search CV。获取列表的numpy数组的值错误
- c++ - 代码在没有初始化指针的情况下运行
- mysql - 为什么 mariadb 连接通过 docker 失败?
- javascript - Eloquent Javascript 第 5 章练习题,使用 !array.some
- android - 自定义 MatrialDatePicker 对话框和 TimePicker
- html - 显示 Bootstrap 4 范围输入的值
- c# - Xamarin.Forms DataTemplate 中图像的闪烁动画
- gradle - gradle liberty 没有这样的属性:类的 outputDir:org.gradle.api.internal.file.DefaultSourceDirectorySet