我正在使用WCF 4.0在C#中编写RESTful API(json)。数据存储在SQL Server 2012 db中。一个可用的调用将允许客户端保存对象,如下所示:
PUT /object/123
{
Subject: "my subject",
Comment: "my comment"
}
到目前为止一切都还可以。但有时客户端只想更新对象中的一个参数。像这样:
PUT /object/123
{
Comment: "I changed my comment"
}
问题是:是否有最佳做法在数据库表中进行更新?我如何知道提供了哪些字段(假设某些字段应该为空)?如何编写只更新提供的那些列的优秀代码?
答案 0 :(得分:0)
一般来说,我这样做。你的第一个例子应该是POST。 POST告诉你它是一个创造。 PUT方法会告诉你它是一个更新,在这种情况下我更新了ID为123的对象的所有字段。这意味着客户端可以发送他们的整个对象,更新任何/所有字段。你只是盲目地复制它们。
我想如果您不想要发送所有字段的开销,您可以检查默认值(null或空字符串)并仅更新那些不等于该值的字段。
还要检查出来:
Only update some properties on an EF entity that are not set to null