0

私はDataServiceContextを使用して、次のようにいくつかのエンティティプロジェクションをロードしています(エンティティには多くのプロパティがあり、トラフィックを最小限に抑えるために、現時点で必要なプロパティのみをロードします)。

from x in ctx.Portfolios
       select new 
       {
         Id = x.Id,
         Name = x.Name,
         PortfolioName = x.PortfolioName,
         Description = x.Description,
         ValidFrom = x.ValidFrom,
         ValidUntil = x.ValidUntil
       };

必要なのは、詳細ビューのためにエンティティをロードするためのエンティティの有効なURIです。

ctx.TryGetUri(obj、out uri)を使用しようとしましたが、常にnullが返されます(おそらく非トラッキングプロジェクションが原因ですが、PKプロパティ(Id)をロードしたため、場合)。

問題は、PKを使用したプロジェクションオブジェクトを持つ、基になるデータエンティティのURIをどのように決定するかです。

4

1 に答える 1

1

C# では、匿名型は設定不可能なプロパティで生成されます (プロパティにはセッターがありません)。その結果、WCF Data Services クライアントはそれらを追跡できません (意味がないため、実体化中にプロパティ値を上書きできませんでした)。その結果、インスタンスは追跡されません。これを回避するには、必要なプロパティを持つ非匿名クラスを宣言し、そのクラスに投影します (プロパティが設定可能であることを確認してください)。VB の匿名型には設定可能なプロパティがあるため、追跡されることに注意してください。

于 2010-09-02T01:16:22.253 に答える