目前我有一个c#silverlight业务应用程序。该应用程序托管在Asp.net中,使用ADO.Net实体框架和域服务类来读取/写入我的sql server数据库。
在我的silverlight客户端界面中,我有一个自动完成框,它使用查询来获取与搜索相关的项目列表。该查询位于我的域服务类中,如下所示:
public IQueryable<Status> GetStatus()
{
var q = (from job in Context.Job
select job.Status).Distinct()
.Select(deliveryState => new Status
{
DeliveryState = deliveryState,
Count = Context.Job.Count
(job => job.Status.Trim() == deliveryState.Trim())
});
q = q.Where(job => job.DeliveryState != null);
return q;
}
然后在我的代码后面的silverlight客户端界面xaml页面中,我使用以下代码在构造函数中加载查询:
var context = dds.DomainContext as InmZenDomainContext;
statusFilterBox.ItemsSource = context.Status;
context.Load(context.GetStatusQuery(), (lo) =>
{
//just to show you how to load..
//new ErrorWindow("Loaded.." + lo.Entities.Count()).Show();
}, null);
我遇到的问题是,如果我向客户端界面添加另一个自动完成框,以及另一个Get查询执行不同类型的搜索,会发生什么:
public IQueryable<ShortCode> GetShortCode()
{
var q = (from job in Context.Job
select job.ShortCode).Distinct()
.Select(name => new ShortCode
{
Name = name,
Count = Context.Job.Count
(job => job.ShortCode.Trim() == name.Trim())
});
q = q.Where(job => job.Name != null);
return q;
}
由于“Context.Load()”函数不支持加载多个查询,因此出现了该问题。此外,如果我尝试声明分隔“Context.Load()” - 只有其中一个工作........
我怎样才能解决这个问题!?!
答案 0 :(得分:1)
这是对你问题的间接回答,所以接受或离开它。
我在一个屏幕上有多个AutoCompleteBox,但我没有使用DDS。很久以前,当我遇到问题时,我放弃了DDS。我不喜欢dds的主要问题是视图中有如此多的逻辑。
我所做的是将ACB直接绑定到实体并使用自定义过滤器进行复杂搜索。它搜索的列表是我使用get命令填充的实体列表
public EntityList<Person> Person
{
get { return _DomainContext.Persons; }
}
我可以详细介绍一下,但是如果你使用DDS,那么我会把它留在那里。
答案 1 :(得分:0)
每个负载有一个实体类型,但同时运行多个负载应该没有任何问题。你是否安装了Fiddler来观察实际穿过电线的情况?