1

Entity Frameworkによって定義されたオブジェクトがあり、部分クラスを介して追加のメソッドとプロパティを追加しました。私はこれを行うことに関する制限のほとんどを理解していると思いますが、私が見ているものを確認したいと思いました(またはうまくいけば、この作業を行うために何をする必要があるかを学びました)。

いくつかの項目を使用して読み取り専用の計算フィールドを作成する読み取り専用プロパティを持つ部分クラスがあります。私が期待/期待していたように、読み取り専用プロパティがADO.NetDataServicesを介して戻ってこないのを見るのは不思議でした。つまり、エンティティフレームワークのプロパティと、部分クラスを介してコードで定義されているプロパティがDataService呼び出しを介して取得されることを期待していました。

これは本当ですか?ADO.Net Data Servicesがデータをクエリしているときに、部分クラスは完全に無視されますか?もしそうなら、読み取り専用タイプのプロパティをエンティティに取得するためのベストプラクティスは何ですか(異なる名前空間を持つ同じ部分クラスがクライアント側とサーバー側の両方のコードベースに切り取られて貼り付けられるのを避けたいため)。

4

3 に答える 3

3

Microsoftフォーラムの投稿から:(ここで完全な投稿を参照してください

「「EFプロバイダーによって公開されている既存のエンティティに読み取り専用プロパティを追加する方法」を尋ねていると思いますか?V1では、これを行う良い方法はありません。EFの場合、EFを使用してメタデータをロードします。メタデータAPIであるため、リフレクションは行いません。したがって、部分クラスを介して追加した可能性のある追加のプロパティは無視されます。

Astoriaには、読み取り専用プロパティの概念がまだありません。したがって、モデルの一部ではない他のプロパティを公開した場合、更新でそれらを処理する方法がわかりません。サーバーでもデータを黙って失いたくない」と語った。

したがって、これはADO.NetDataServicesでは公開できない機能のようです。

于 2008-11-18T02:21:43.577 に答える
2

ここには、基本モデル(EF)とWCF/mexレイヤーの2つの個別の懸念事項があります。追加のプロパティはedmxモデルの一部にはなりませんが、この問題はWCF/mexの側面に関連しているのではないかと思います。

ただし、機能したとしても、ADO.NETDataServicesはロジックではなくデータを転送します。したがって、計算されたプロパティに依存することは安全なオプションではありません。クライアントには数式がなく、元の値だけがあります。

それがどれであるかを見つけるには、プロパティを読み取り/書き込みにして(書き込みが何も役に立たない場合でも)、値に[DataMember]属性などがあることを確認してください。

于 2008-11-17T05:11:05.310 に答える
-1

問題は、XML シリアライゼーションでは、get および set メソッドでのみプロパティをシリアライズすることだと思います。そうしないと、デシリアライズできませんでした。空の set メソッドをプロパティに追加して、どうなるか見てみましょう。

ロブ

于 2008-11-17T06:53:57.740 に答える