私の問題は少し複雑です。ASP.NET WCF REST Linq-to-SQL POST/WebInvoke JSON、Linq-to-SQLによって生成されたEntitySetを持つオブジェクト
主な目標:WCFサービスを通じてSQL ServerデータベースにWebアプリケーションからのプレーヤー(クラス/テーブル)の一覧を含むアカウント(クラス/テーブル)を登録します。
私はクラスを作成するために、Account
とPlayer
クラスを作成したLinq-to-SQLを使用しました。 Player
には、外部キーAccountEmail
〜Account
テーブルがあります。そのため、クラスAccount
はEntitySet<Player> _Players;
です。
ウェブアプリケーションはこのサービスへの参照を持ち、ユーザーが登録を完了すると、サービスにWebClient
とDataContractJsonSerializer
というPOST要求を出しています。
残念ながらサービスまたはHTTPプロトコルが要求を理解することはできません。
System.Net.WebException: The remote server returned an error: (400)
Full error response from server
https://s31.postimg.org/x6b27uqqj/errorrr.png
失敗は、JSONのプレイヤーにDB.designer.cs:line 295 at ReadPlayerFromJson(XmlReaderDelegator
サービスの読み方を知らない何らかの理由でサービス側です:
[OperationContract]
[WebInvoke(UriTemplate = "/Register",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json, Method = "POST")]
void RegisterAccount(Account account);
クライアント側:
選手のリストなしAccount
を送信する場合
は、操作が成功します
{"EMAIL":"[email protected]","NAME":"1","PASSWORD":"test","Players":[{"Account":null,"AccountEmail":"[email protected]","FirstName":"test","Id":0,"LastName":"test","Type":-1}]}
質問:
I操作が失敗した選手のリストを
{"EMAIL":"[email protected]","NAME":"1","PASSWORD":"test","Players":null}
ちょうど
Account
を得ることを期待して、RESTサービスがkをしないと推測してください今、選手のリストは何ですか?私は何とかそれを定義する必要があります。なぜサービスで
Account
にEntitySet<Player> _Players;
があるのですか?そして、サービスへの参照を追加した後のクライアントでは、配列Player[]
?Linq-to-SQLがフィールド
Account
をプレイヤーに追加するのはなぜですか?それには何が含まれるべきですか?あなたが見ることができるように、このフィールドはjsonではnullです。複雑なオブジェクト/既知のタイプは私の問題で何かをしなければならないのですか?
私はこの問題を解決してください、ありがとう!