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。再说一次,比较似乎不是一个整洁的设计。有什么想法吗?

WCF REST API 记录的部分更新

发送 sp 中的所有值,然后在更新记录时编写 case 语句以检查 null您可以在更新语句中检查 isnull,因此当参数为 null 时,使用它们自己的值更新它们

喜欢

更新学生设置 名称 = 大小写,当 isnull(@Name,'') ='' 则名称 else @Name结尾其中 Id = 1127871

在经历了处理此类事情的各种策略之后,我实现了这个问题的答案中描述的内容:仅更新 EF 实体上未设置为 null 的某些属性。

简而言之,我正在跟踪在 desrialization 期间设置了哪些属性,然后仅更新这些属性。