我检查了其他问题,我相信这应该有效:
private static List<Duck> GetDucks(this DataServiceContext ctx, params int[] ids)
{
return ctx.CreateQuery<Duck>("Ducks").Where(x => ids.Contains(x.DuckID)).ToList();
}
我收到了NotSupportedException:不支持“包含”方法。
我将查询更改为
Where(x => ids.Any(id => id == x.DuckID)
我收到消息:MaxProtocolVersion 小于 '3.0' 时不支持方法 'Any '
然后我以不同的方式构造了 DataServiceContext:
public static DataServiceContext Context
{
get { return new DataServiceContext(baseUri, DataServiceProtocolVersion.V3); }
}
然后我收到消息:NotSupportedException:'Any' 方法的源参数必须是导航或集合属性
我想在继续之前我可以做一些建议。
编辑
我确实在客户端和服务器端都使用了 MaxProtocolVersion 3。
无论如何,这个特定的错误消息现在已经消失了,因为我不再尝试返回数据子集。我只是提前获得了完整的实体列表(尽管这需要进一步考虑/优化)。我错误地认为,如果我有一个空的临时 DataServiceContext,我将不得不检索我想要更新的实体,然后将它们保存回来(受我发现的执行更新的各种示例的影响)。当然AttachTo(EntitySetName, entity)方法是正确的解决方案。然后您可以在 TempContext.SaveChanges()之前调用UpdateObject(entity )。