2013-05-30 1 views
0

CARS 테이블의 ENTITY FRAMEWORK 모델을 만들고 EDMX 디자이너에서 두 개의 TPH 엔티티를 만들고 OLD CAR 및 NEW CAR라는 이름으로 CARS 테이블을 Abstract로 설정했습니다.JS 또는 JQUERY에서 계층 구조 엔티티 업데이트

지금, 나는 JQUERY에서 CARS에게 실체에 접근, 그리고 난 다음을 수행 할 수 있습니다

  • GET을

(잘 작동) 삭제 (제대로 작동)하지만 난 아니다 파생 된 상속 된 엔터티에 CREATE (POST) 또는 UPDATE (PUT) 할 수있게되면 다음과 같은 오류가 발생합니다. "상속 된 형식에 대해 형식 정보를 지정해야합니다."

I hav 전자는 WCF 데이터 서비스에서 내 모든 개체를 노출했습니다.

아래 코드는 내 코드입니다.

function putData() { 
      var url = "http://localhost:55153/WebSite3/WcfDataService1.svc/Cars(2)"; 

      var obj = '{"CarName": "Margalla", "CarModel" : "Honda"}'; 
      var r = window.JSON.stringify(obj); 
      $.ajax({ 
       type: "PUT", 
       url: url, 
       data: obj, 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) { 
        alert("Updated successful"); 
       }, 
       error: function (msg) { 
        alert(msg.responseText); 
       } 
      }); 
     } 
+0

매개 변수 'CarName'과 'CarModel'이 WCF 서비스에서 동일한 이름을 가지고 있는지 확인합니다. 'Cars (2)'함수에서이 데이터를 어떻게 가져 왔습니까? – krishgopinath

+0

예 그들은 ODATA Technics를 통해 호출되는 동일한 이름을가집니다. – RHM

+0

IN THE WCF 함수를 게시 할 수 있습니까? – krishgopinath

답변

0

여기서 문제는 서버가 삽입 (또는 수정)하려는 차량의 유형을 알지 못한다는 것입니다.

"odata.type"속성을 포함하도록 페이로드를 변경해보십시오. 예를 들어 :

var obj = '{ 
      "odata.type": "YourNamespace.OldCar", 
      "CarName": "Margalla", 
      "CarModel" : "Honda" 
      }'; 

은 "odata.type"속성은 새로운 JSON 형식에 고유 (V3 하나로, OData 만 해당), 그래서도에이를 명확하게하기위한 요청에 "DataServiceVersion"헤더를 포함하여 제안 v3 페이로드를 보내는 서버. 예 :

$.ajax({ 
      ... 
      beforeSend: function (request) 
      { 
       request.setRequestHeader("DataServiceVersion", "3.0"); 
      }, 
      ... 
     });