2012-10-04 2 views
1

WCF 4.0을 사용하여 C#에서 RESTful API (json)를 작성했습니다. 데이터는 SQL Server 2012 db에 저장됩니다. 사용 가능한 호출 중 하나를 사용하면 클라이언트에서 다음과 같이 개체를 저장할 수 있습니다.REST API 데이터베이스에 개체 업데이트 저장

PUT /object/123 

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

지금까지 모두 괜찮습니다. 그러나 때때로 클라이언트는 객체의 매개 변수 중 하나만 업데이트하려고합니다. 좋아요 :

PUT /object/123 

{ 
Comment: "I changed my comment" 
} 

질문 : 데이터베이스 테이블에서 업데이트하는 것이 가장 좋은 방법입니까? 일부 필드가 null 일 수 있다고 가정 할 때 어떤 필드가 제공되었는지 어떻게 알 수 있습니까? 제공된 열만 업데이트하는 멋진 코드를 작성하려면 어떻게해야합니까?

답변

0

일반적으로 나는 이것을 좋아한다. 첫 번째 예제는 POST 여야합니다. POST는 그것이 생성되었음을 알려줍니다. PUT 메서드는 업데이트임을 알려주고,이 경우 객체의 모든 필드를 ID 123으로 업데이트합니다. 이는 클라이언트가 모든/모든 필드가 업데이트 된 전체 객체를 보낼 수 있음을 의미합니다. 당신은 맹목적으로 그들을 복사합니다.

모든 필드를 전송하는 오버 헤드가 필요하지 않은 경우 기본값 (null 또는 빈 문자열)을 확인하고 해당 값과 같지 않은 필드 만 업데이트 할 수 있습니다.

이 체크 아웃 :

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

+0

예, 감사합니다. 그러나 어떤 필드가 제공되었는지 알고 해당 필드를 SQL 쿼리 업데이트에 보내는 메커니즘을 코딩하는 방법을 찾고 있습니다. – Sten

+0

@Sten은 위에서 추가 한 링크의 첫 번째 대답을 확인합니다. – Erix

+0

링크를 제공해 주셔서 감사합니다. 그것은 나에게 모든 것에 대한 단서를주었습니다. 꽤 지루할 수있는 것처럼 보입니다. – Sten