WCF REST API部分更新记录

时间:2012-05-04 13:24:26

标签: c# wpf rest

我正在编写一个WCF Rest API,为实体提供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但没有名称和LastName。 Id是必填字段。在这种情况下,我需要知道什么是最好的方法/设计?

我可以从db获取现有记录并在两者上执行比较然后根据需要进行更新。这种方法的问题是我无法知道用户是否真的想要将字段更新为null。然后,比较似乎不是一个整洁的设计。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

更新它们

更新学生 设置Name = case isnull(@ Name,'')=''然后命名为@Name end 其中Id = 1127871

答案 1 :(得分:0)

在完成处理此类事情的各种策略后,我实现了这个问题的答案中描述的内容:Only update some properties on an EF entity that are not set to null

简而言之,我正在跟踪在反序列化期间设置的属性,然后仅更新这些属性。