2012-10-04 7 views
1

Я пишу RESTful API (json) в C# с использованием WCF 4.0. Данные хранятся в SQL Server 2012 db. Один доступный вызов позволит клиентам сохранять объекты, например:REST API сохраняет объекты в базе данных

PUT /object/123 

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

Это далеко все в порядке. Но иногда клиент только хочет обновить один из параметров в объекте. Например:

PUT /object/123 

{ 
Comment: "I changed my comment" 
} 

Вопрос в следующем: есть ли лучший способ сделать обновление в таблице базы данных? Как узнать, какие поля были предоставлены (учитывая, что некоторые поля должны быть пустыми)? Как написать хороший код, который обновляет только те столбцы, которые были поставлены?

ответ

0

Обычно я делаю это так. Ваш первый пример должен быть POST. POST сообщает вам, что это создание. Метод PUT скажет вам, что это обновление, и в этом случае я обновляю ВСЕ поля объекта с идентификатором 123. Это означает, что клиент может просто отправить вам весь свой объект с обновленным обновленным/обновленным положением. Вы просто слепо скопируете их.

Я полагаю, что если вы не хотите накладных расходов на отправку всех полей, вы можете проверить значение по умолчанию (пустую или пустую строку) и обновить только те поля, которые не равны этому значению.

также проверить это:

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

+0

Да, спасибо. Но я ищу способ закодировать механизм, который знает, какие поля были поставлены, и просто отправить эти поля в обновление запроса sql. – Sten

+0

@Sten проверить первый ответ в ссылке, которую я добавил выше. – Erix

+0

Спасибо за ссылку. Это дало мне некоторые подсказки обо всем этом. Похоже, это может быть довольно утомительно. – Sten

Смежные вопросы