0

情景

目前我有 ac# silverlight 商业应用程序。该应用程序托管在 Asp.net 中,使用 ADO.Net 实体框架和域服务类来读取/写入我的 sql 服务器数据库。

设置

客户端界面

在我的 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()”分开-其中只有一个有效........

我怎么能绕过这个!?!

4

2 回答 2

1

这是对您问题的间接回答,因此请接受或放弃。

我在一个屏幕上有多个 AutoCompleteBoxes,但我没有使用 DDS。很久以前,当我不断遇到问题时,我放弃了 DDS。我不喜欢 dds 的主要一点是视图中有很多逻辑。

我所做的是将我的 ACB 直接绑定到实体并使用自定义过滤器进行复杂的搜索。它搜索的列表是我使用 get 命令填充的实体列表

public EntityList<Person> Person
        {
            get { return _DomainContext.Persons; }
        }

我可以更详细地介绍,但如果您锁定使用 DDS,那么我将保留它。

于 2009-10-05T20:20:02.493 回答
0

每个负载有一个实体类型,但同时运行多个负载应该没有任何问题。您是否安装了 Fiddler 以观察实际发生的情况?

于 2009-10-06T21:07:43.533 回答