WCFサービスを公開するEntity Framework(4.1)を使用してWebサイトを作成しています.WCF経由でサーバーと通信するSilverlightクライアントがあります。私は、なしでのWCFサービスでいくつかのエンティティを送って(そしておそらく受け取って)、プロキシ/ラッパー等のクラスを作りたいと思っています。たとえば、Username、Password、Emailフィールドを持つUser
エンティティタイプがあります(実際はもっと多くなりましたが、これを単純にしておくだけです)。このオブジェクトをSilverlightクライアントに送信します。ユーザー名とメールを送信している間、私は(明らかに)Passwordプロパティをクライアントに送信したくありません。今、私は、属性が[Serializable]
と[DataContract]
の属性を持つラッパーを作成しています。フィールドは[DataMember]
という属性を持ち、必要なフィールドのみを含み、新しいインスタンスを作成し、エンティティオブジェクトから値をコピーし、そのプロキシオブジェクトを送信します。それは動作しますが、それは不便で非常に苦しいです。私が必要とするのは、送信したいプロパティを直接設定し、単に他のものを公開しないという仕組みです。エンティティモデルのコードを変更することはできません(属性の追加/編集).EDMXに触れるたびに自動再生されます。選択したメンバーだけをクライアントに公開する方法はありますか?WCFでエンティティを直接送信する方法
2
A
答えて
2
クライアントでPROXYエンタイトを回避するには、クライアントがすでにサーバーエンティティアセンブリを参照していることを確認して(クライアント側とサーバー側)同じエンティティ(クライアント側とサーバー側)を再利用できます彼ら自身のアセンブリに)。その後、サーバ参照の詳細オプションをチェックし、「参照されたアセンブリのタイプを再利用する」がチェックされていることを確認します。
これにより、プロキシインターフェイスとクライアントが作成されますが、サーバーエンティティは再利用されます。
サービス参照インターフェイスの代わりにClientBase<>汎用を使用することで、プロキシインターフェイスも回避できますが、サービスサイドインターフェイス(サービス契約インターフェイス)を別のアセンブリに除外して、両方のクライアントサーバー。
あなたの所見によると、エンティティのプロパティを[DataMember]としてマークしないと、そのプロパティはシリアル化されません。あなたは同じエンティティを両側から持っているので、クライアントのデフォルト値(0、nullなど)としてフィールドが出てきます。
+0
それは良い回避策であるにもかかわらず、非暴露のメンバーのためのデフォルト/ヌル値を持つことは良いプログラミングの練習ではありませんが、私はそれを見てみましょう.. –
関連する問題
- 1. touchイベントを/ dev/input/eventに直接送信する方法は?
- 2. WCFでEntity Frameworkエンティティを送信する:ナビゲーションフィールドのシリアル化を防ぐ方法
- 3. IListをWCFに送信する方法
- 4. OAuth(Twitter)経由でアプリケーションのscreen_nameから直接メッセージを送信する方法
- 5. 認証なしで直接SMTPサーバーにメールを送信する方法は?
- 6. jQuery.ajax()フォームを直接ブラウザに送信
- 7. twitter APIから直接メッセージを送信
- 8. 属性に直接ajaxデータを送信
- 9. エンティティ・フレームワークで通常のインラインSQLを送信する方法
- 10. Silverlight WCF RIAドメインサービスからオブジェクトを直接取得する方法
- 11. フォーム直接送信の問題
- 12. フックで別のプロセスに直接キーストロークを送信する
- 13. arduinoプログラムをBluetooth経由で直接送信できますか?
- 14. OpenStackのベアメタルマシンでリクエストを直接送信できますか?
- 15. RMagickに直接コマンドを送信するよう依頼する
- 16. ボタンをクリックして直接メールを送信するandroid
- 17. オーディオバッファを転送して直接再生する方法
- 18. iOS:ユーザーに健康のプライバシー設定を直接送信する
- 19. Ruby on Rails - セッション変数に直接フォームデータを送信する
- 20. Twitter:スクライブを使用して直接メッセージを送信します。
- 21. UNIXからMAINFRAMEに直接接続してファイルを送信する
- 22. Twitterで直接メッセージを送るC#
- 23. サーバからリストを送信するが、クライアント(WCF)でプリントする方法C#
- 24. 送受信インターネット接続を監視する方法
- 25. MooTools:responseTextを直接使用する方法
- 26. 複合型をksoap2-androidからwcfサービスに送信する方法は? wcfサービスの設定方法
- 27. WCF - GUIDを効率的に送信する方法(文字列ではない)
- 28. WCFサービス参照でHTTP認証資格情報を送信する方法
- 29. デバイスと直接通信するJavaのネイティブな方法は何ですか?
- 30. wcfサービスにカスタムタイプを送信
良い質問です!あなた自身のカスタムPOCOを公開することは、私がそれを行う方法を知っている唯一の方法です。 – Jay
私はジェイに同意します。必要な[DataMembers]のみを含む[DataContract]属性で装飾されたDTOクラスを作成する必要があります。 EF生成エンティティからDTOにマップする必要があります。 –
さて、私はそれが最善の方法であることを確かめたいと思っていたように、私は同じ方法を続けています。私はその答えを受け入れることができました。とにかく答えとして: –