0

我创建了一个 CARS 表的实体框架模型,并在 EDMX 设计器上创建了两个 TPH 实体,并将它们命名为 OLD CAR 和 NEW CAR,将我的 CARS 表设置为 Abstract。

现在,我正在从 JQUERY 访问 CARS 实体,我可以执行以下操作:

  • 获取(工作正常)
  • 删除(工作正常)

但我无法在派生的继承实体中创建(POST)或更新(PUT),它给了我以下错误“必须为继承的类型指定类型信息”

我已经从 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);
              }
          });
      }
4

1 回答 1

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");
          },
          ...
       });
于 2013-05-31T17:39:24.857 回答