我将 WCF 数据服务 5.3.0 与反射数据提供程序一起使用。我的源数据存储在 RavenDB 中,所以我的所有查询都被推迟了。那么,在应用 OData 过滤器之后和结果返回给客户端之前,是否有一些方法可以为我的查询调用 .ToList()?
更新:我的 DataModel 属性声明
public IQueryable<PositionModel> Positions
{
get
{
using (var session = OLAPDocumentStore.OpenSession())
{
return session
.Query<ConsolidatedApplicationPosition>()
.Select(x => new PositionModel
{
ApplicationId = x.ApplicationId,
CategoryId = x.CategoryId,
ID = x.Id,
Platform = x.Platform,
Position = x.Position,
RegionalCode = x.RegionalCode,
Timestamp = x.Timestamp,
TopListId = x.TopListId
})
.AsQueryable();
}
}
}
解决方案请参阅@matt-johnson 答案,并且不要忘记将 [DataMember] 添加到模型中的所有属性
[DataContract, DataServiceKey("Id")]
public class PositionModel
{
[DataMember]
public string Id { get; set; }
[DataMember]
public string ApplicationId { get; set; }
[DataMember]
public string CategoryId { get; set; }
[DataMember]
public int Position { get; set; }
[DataMember]
public string RegionalCode { get; set; }
[DataMember]
public DateTime Timestamp { get; set; }
[DataMember]
public string TopListId { get; set; }
}