Silverlight RIA域名服务。我如何简单地获得实体集合?

时间:2010-06-14 21:06:46

标签: asp.net linq silverlight-4.0

这应该非常简单,但我无法理解。

我可以将数据绑定到如下所示的数据网格......

var context = new DishViewDomainContext();

this.dataGrid1.ItemsSource = context.Restaurants;

context.Load(context.GetRestaurantsQuery());

。这工作......但是现在我只想把这个集合放在一个变量中,我可以循环收集...这似乎不可能..我这样做,似乎什么也没有...我不确定是什么第3行呢..它运行域服务方法,但它在哪里填充数据?

        var dc = new DomainService1();
        IEnumerable<ApplicationLog> collApplicationLog = dc.ApplicationLogs;
        dc.Load(dc.GetApplicationLogsQuery());

        foreach (ApplicationLog al in collApplicationLog)
        {
            int? i = al.ApplicationID;
        }

2 个答案:

答案 0 :(得分:0)

尝试以下

var collApplicationLog  = dc.ApplicationLogs.ToList();

答案 1 :(得分:0)

对dc.Load(...)的调用是异步网络操作。该调用立即返回,但是它应该加载的数据在以后的某个时间才会可用。

dc.Load(...)的返回值是一个LoadOperation对象,它有一个Completed事件。您需要向Completed事件添加事件处理程序,以便在加载数据并且可以使用IEnumerable时通知您。

原因如下:只使用IEnumerable,您将无法知道数据何时到达。从中提取IEnumerable的EntitySet也实现了INotifyCollectionChanged。这就是XAML数据绑定到IEnumerable的工作原理 - 数据绑定在数据到达时发现它因为它监听集合更改通知,然后它从枚举中获取数据。

您的foreach循环不等待数据到达。