Silverlight MVVMテンプレートを作成していますが、WCFサービスの戻りとエンティティオブジェクトでスタックしています。
これが私がしたことです:
- サーバー側でEntityFrameworkを使用する
- いくつかのテーブルを使用して小さなテストデータベースを作成しました。
- サーバー側でWCFサービスを作成しました
- 次に、整数を返す小さなテストメソッドを作成しました。
- クライアント側で、サービス参照を追加し、完了したメソッドで整数の結果を正常に受信しました
- 次に、テストサービスメソッドを変更して、「Person」オブジェクト(Entity Frameworkのエンティティ)を返します。
- サービスリファレンスを更新しましたが、機能しません。
- 次に、タイプを基本的なCLRタイプに戻すと、再び機能します
Fiddlerをチェックしたところ、サービス応答で次の504エラーが発生しました。
HTTP / 1.1 504 Fiddler-受信失敗コンテンツタイプ:text / html; charset = UTF-8接続:閉じるタイムスタンプ:08:56:23.783
[Fiddler] ReadResponse()が失敗しました:サーバーはこのリクエストに対する応答を返しませんでした。
これを理解しようとした後、 WCFトレースログに出くわし、次のエラーを見つけました。
There was an error while trying to serialize parameter :BasicResult. The InnerException message was 'Type 'MVVMProject.Web.DataSource.Person' with data contract name 'Person:http://schemas.datacontract.org/2004/07/MVVMProject.Web.DataSource' is not expected. Consider using a DataContractResolver or add any types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding them to the list of known types passed to DataContractSerializer.'. Please see InnerException for more details.
なぜこんなに難しいのか分かりませんか?エンティティをシリアル化できるようにするには、エンティティにいくつかのプロパティを設定する必要がありますか?Entity Frameworkのdesigner.csファイルを見ると、エンティティにSerializable属性があります。確かに、これはWCFサービスを介してこれを渡すことができることを意味しますか?残念ながら、このエラーはわかりません...
WCFサービスでEntityFrameworkを使用することも可能ですか?
どんな助けでも大歓迎です。