私はlinqオブジェクトをWCFでシリアル化しています。 dbmlは単方向シリアル化用に設定されています。WCFでlinqエンティティをシリアライズ
私のオブジェクトはかなりシンプルです:BudgetはBudgetLineItemsのコレクションを持っています。各BudgetLineItemにはItemCateogryがあります。
Budget/BudgetLineItemsは問題なくシリアル化されます。しかし、各BudgetLineItemのItemCateogryはそうではありません。私はデフォルトでは、linqは各BudgetLineItemのItemCategoryに[DataMember]を追加していないことに気付きました。手動で追加し、[IgnoreDataMember]を使用してItemCategoryエンティティで循環参照を削除しました。しかし、運が悪い。
質問:
は、デフォルトでは、WCF多対1の関係をシリアル化、または私は何かが足りないのですができますか?シリアル化されたデータは、それぞれのBudgetLineItemのItemCategoryデータが重複していて、むしろ減りますが、それは問題ありません。
このためにカスタムのDataContractSerializerを実行する必要がありますか?
** EDIT **実際に、仕事をしました([DataMemberを]追加)、私はクライアント(当たり前)上のサービス参照を更新しませんでした。
新しい質問:linqtosqlデザイナーに、デザイナーが生成しているエンティティの[DataMember]と[IgnoreDataMember]フィールドを維持するよう指示する方法はありますか?それ以外の場合は、dbmlを保存するたびに更新する必要があります。
情報ありがとうございます。シリアライゼーションを成功させるために、再帰的な(通常は親への参照)プロップに[DataMemberIgnore]を追加する必要がありました。 dbmlの変更を呼びかけましたが、もちろん変更ごとに上書きされます。それは動作しますが、非常にシームレスではありません。ご存じのように、シリアライズされたオブジェクトは_巨大です。 ありがたいことに、これはコンセプトの証明にすぎません(還元型ロジックを取り除くために、私たちのサービスにWCFレイヤーを消費するSQLRS2008) – ericvg
OKいいえprobです。私のクローン手順をよく調べて、うまくいけばそのルートがあなたを助けてくれます。 – GONeale
素晴らしい!あなたのブログは消えています:( – Moulde