1

WCFデータサービスを使用してデータサーバー側を仲介し、第三者にデータへのODataアクセスを容易にします。物事のサーバー側は比較的簡単でした。一方、クライアント側は、私たちにフィット感を与えています。WCF Data Services:保存時にオブジェクトを処理する

通常のEntity FrameworkからData Servicesに変換しており、(サービス参照を介して)データサービスと通信する生成されたクライアントオブジェクトを含むアセンブリを作成しました。これらのクラスは部分的なものなので、ロジックと拡張プロパティを追加しました。これはすべて素晴らしいです。

問題は、ワイヤを介して送信される前にいくつかの高度なシリアル化を行う必要があるため、保存時にオブジェクトを処理する必要があるという問題です。 DataServiceContextクラスには、WritingEntityとReadingEntityの2つのイベントが含まれています。 ReadingEntityイベントは実際に私たちにとって正しい時刻に発生します(オブジェクトの逆シリアル化後)。 WritingEntityイベントは、私たちにとって間違った時間に発生します(オブジェクトの直列化後)。

オブジェクトを要求に書き込む前にオブジェクトをキャッチする方法はありますか?そのため、オブジェクトを作成しようとしているメソッドを呼び出すことができますか?

明らかに、Entitiesリストをループして、UnchangedまたはDeletedの状態にないエンティティを探して、そこに適切なメソッドを呼び出すことができます。しかし、これは私が毎回特殊なコードを追加する必要があります。コンテキスト上でSaveChangesを呼びたいと思っていました。これは私たちがする必要があるかもしれませんが、サービスに送信するためにXMLに書き込まれる前にエンティティをキャッチする方法があればいいと思います。

答えて

0

現在、DataServiceContextには、必要な処理を行うフックがありません。私が考えることのできる最も近いものは、あなたがすべての実体を歩いて見せたアプローチと、修正されたものを発見したものです。これは、あなた自身のSaveChangesのようなコンテキストクラスのメソッド(これも部分的です)で行うことができます。

関連する問題