0

我正在编写一个 WCF Rest API,它为一个实体提供 CRUD 功能,比如Student。这是它的定义方式:

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,但没有 name 和 LastName。ID 为必填字段。我需要知道在这种情况下最好的方法/设计是什么?

我可以从数据库中获取现有记录并对两者进行比较,然后根据需要进行更新。这种方法的问题是我无法知道用户是否真的想要将字段更新为空。再说一次,比较似乎不是一个整洁的设计。有任何想法吗?

4

2 回答 2

0

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

更新学生集 Name = case when isnull(@Name,'') ='' then Name else @Name end where Id = 1127871

于 2012-05-04T13:31:01.537 回答
0

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

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

于 2012-05-11T12:42:49.543 回答