WCF Data Servicesからのデータ量を減らすために、私は投影法を使用します。
Linqクエリは次のようになりました。
...
_ctx.Files.Select(x => new FileProjection() { Id=x.Id, Name = x.Name });
...
[DataServiceKey("Id")]
public class FileProjection : ViewModelBase
{
private string _name;
public Guid Id { get; set; }
public string Name
{
get { return _name; }
set
{
_name = value;
NotifyOfPropertyChange(() => Name);
}
}
public string MyCustomProperty { get; set; }
}
FileProjectionクラスには、ファイルエンティティモデルには存在しない追加のプロパティがあります。
データを取得している間は正常に動作します。しかし、Nameを更新しようとすると、SaveChanges内で例外が発生しました。
追加情報:プロパティ「MyCustomProperty」はタイプ「DataAccessLayer.Context.File」に存在しません。タイプによって定義されたプロパティ名のみを使用するようにしてください。
SaveChanges中にMyCustomPropertyを無視する方法はありますか?
または、XXXProjectionクラスにカスタムパブリックプロパティを含めるべきではありませんか?
クライアントはSilverlightアプリ、WCF Data Services v5.0.1、oDatav3です。