【问题标题】:REST API save object updates to databaseREST API 将对象更新保存到数据库
【发布时间】:2012-10-04 13:50:49
【问题描述】:

我正在使用 WCF 4.0 在 C# 中编写一个 RESTful API (json)。数据存储在 SQL Server 2012 数据库中。一个可用的调用将允许客户端保存对象,如下所示:

PUT /object/123

{
Subject: "my subject",
Comment: "my comment"
}

到目前为止一切都很好。但有时客户端只想更新对象中的一个参数。像这样:

PUT /object/123

{
Comment: "I changed my comment"
}

问题是:是否有在数据库表中进行更新的最佳实践?我怎么知道提供了哪些字段(假设某些字段应该可以为空)?如何编写只更新提供的那些列的好代码?

【问题讨论】:

    标签: sql-server json wcf rest


    【解决方案1】:

    一般我是这样做的。您的第一个示例应该是 POST。 POST 告诉你这是一个创建。 PUT 方法会告诉您这是一个更新,在这种情况下,我会更新 id 为 123 的对象的所有字段。这意味着客户端可以将其整个对象发送给您,其中任何/所有字段都已更新。你只是盲目地复制它们。

    我想如果您不希望发送所有字段的开销,您可以检查默认值(null 或空字符串)并仅更新那些不等于该值的字段。

    也看看这个:

    Only update some properties on an EF entity that are not set to null

    【讨论】:

    • 好的,谢谢。但我正在寻找一种方法来编码知道提供了哪些字段并将这些字段发送到 sql 查询更新的机制。
    • @Sten 检查我上面添加的链接中的第一个答案。
    • 感谢您的链接。它给了我一些关于整个事情的线索。看起来很乏味。
    • 我会再等一段时间,看看是否有人提出了更好的解决方案。 (如果没有,我会将您的回复标记为已接受。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多