0

CARS テーブルの ENTITY FRAMEWORK モデルを作成し、EDMX デザイナーで 2 つの TPH エンティティを作成し、OLD CAR と NEW CAR という名前を付けて、CARS テーブルを抽象に設定しました。

現在、JQUERY から CARS エンティティにアクセスしており、次のことができます。

  • GET (正常に動作)
  • 削除 (正常に動作)

しかし、継承された派生エンティティに CREATE (POST) または UPDATE (PUT) を実行できません。次のエラーが表示されます。

WCF Data Services からすべてのエンティティを公開しました

以下は私のコードです。

 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 のみ) に固有であるため、v3 ペイロードを送信していることをサーバーに明確にするために、要求に「DataServiceVersion」ヘッダーを含めることもお勧めします。例えば:

$.ajax({
          ...
          beforeSend: function (request)
          {
              request.setRequestHeader("DataServiceVersion", "3.0");
          },
          ...
       });
于 2013-05-31T17:39:24.857 に答える