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);
在上面的代码片段中,我正在创建一个带有两个投影(列)的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和名称字段:
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对象丢弃先前指定的投影?我没有选项来执行首先返回所有列的查询。
答案 0 :(得分:0)
问题已解决:在执行任何LINQ查询之前,请在WCF数据服务上下文中设置以下MergeOption:
context.MergeOption = MergeOption.OverwriteChanges;
相关信息: