【发布时间】:2013-11-24 01:31:21
【问题描述】:
Silverlight 5 / WCF 数据服务 5.6.0 / 实体框架 5 / 异步 LINQ DataServiceQuery
如何在后续执行中从我的 DataServiceQuery LINQ 查询中重置/删除/取消缓存/删除投影?
考虑下面的代码:
var query =
(
from c in context.Customers
select new Customers()
{
ID = c.ID,
Name = c.Name,
}
) as DataServiceQuery<Customers>;
query.BeginExecute((result) =>
Dispatcher.BeginInvoke(() =>
{
// process results from query...
// query.EndExecute(result).ToList();
}), null);
在上面的 sn-p 中,我正在创建一个带有两个投影(列)的 LINQ 查询,这将通过 WCF 数据服务返回 ID 和 Name 字段。这很好用;问题从下面开始......
在稍后执行的另一种方法中,我有一个类似的查询来获取其他列/投影。但是,下面的 LINQ 查询返回与上面相同的结果集并忽略其他列:
var query =
(
from c in context.Customers
select new Customers()
{
ID = c.ID,
Name = c.Name,
Age = c.Age, // additional columns returning null
Height = c.Height // additional columns returning null
}
) as DataServiceQuery<Customers>;
query.BeginExecute((result) =>
Dispatcher.BeginInvoke(() =>
{
// process results from query...
// query.EndExecute(result).ToList();
}), null);
删除所有投影以返回所有列也失败;我只是取回之前指定的初始 ID 和 Name 字段:
var query =
(
// No projections, just get ALL columns please!
from c in context.Customers
select c
) as DataServiceQuery<Customers>;
query.BeginExecute((result) =>
Dispatcher.BeginInvoke(() =>
{
// process results from query...
// query.EndExecute(result).ToList();
}), null);
如何让 DataServiceQuery 对象放弃先前指定的投影?我没有执行首先返回所有列的查询的选项。
【问题讨论】:
标签: linq asynchronous wcf-data-services silverlight-5.0