为了减少来自 WCF 数据服务的数据量,我使用了投影技术。
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 类具有 File 实体模型中不存在的附加属性。
它在获取数据时工作正常。但是,如果我尝试更新名称,我会在 SaveChanges 中遇到异常:
附加信息:“DataAccessLayer.Context.File”类型上不存在“MyCustomProperty”属性。确保仅使用类型定义的属性名称。
有没有办法在 SaveChanges 期间忽略 MyCustomProperty?
或者 XXXProjection 类不应该有任何自定义公共属性?
客户端是 Silverlight 应用程序、WCF 数据服务 v5.0.1、oData v3