WCF REST API 记录的部分更新
本文关键字:更新 记录 REST API WCF | 更新日期: 2023-09-27 18:33:16
我正在编写一个WCF Rest API,该API为实体(例如Student)提供CRUD功能。以下是它的定义:
class Student
{
Guid Id;
string Name;
string LastName;
string Age;
DateTime DOB;
}
我的服务合同是这样的:
class StudentService
{
[WebInvoke(Method = "POST")]
public void Add(Student student)
{...}
[WebInvoke(Method = "PUT")]
public void Update(Student student)
{...}
[WebGet()]
public void Get(string Id)
{...}
}
现在的问题是,在更新学生记录时,客户端可能无法提供完整的数据。例如,它可以提供 ID 和 DOB,但没有名称和姓氏。Id 为必填字段。我需要知道在这种情况下最好的方法/设计是什么?
我可以从 db 获取现有记录并对两者进行比较,然后根据需要进行更新。这种方法的问题在于,我无法知道用户是否真的要将字段更新为 null。再说一次,比较似乎不是一个整洁的设计。有什么想法吗?
发送 sp 中的所有值,然后在更新记录时编写 case 语句以检查 null您可以在更新语句中检查 isnull,因此当参数为 null 时,使用它们自己的值更新它们
喜欢
更新学生设置 名称 = 大小写,当 isnull(@Name,'') ='' 则名称 else @Name结尾其中 Id = 1127871
在经历了处理此类事情的各种策略之后,我实现了这个问题的答案中描述的内容:仅更新 EF 实体上未设置为 null 的某些属性。
简而言之,我正在跟踪在 desrialization 期间设置了哪些属性,然后仅更新这些属性。