上周我一直在拼命想弄清楚我的脱节是什么,我无法围绕RIA服务。我一丝不苟地按照the Microsoft tutorial video中所示的例子,我仍然遇到问题。可能是我正在尝试做一些你做不到的事情,但很可能我只是采取了错误的方式。
在教程中,他们使用的代码非常类似于:
IVCContext ctx = new IVCContext();
MyDataGrid.ItemsSource = ctx.ChairOptions;
ctx.Load(ctx.GetChairOptionsQuery());
使用在ChairOptions表中找到的信息填充DataGrid。
但我想要做的是直接访问结果,而不必将它们绑定到DataGrid或任何其他控件。我想简单地得到结果集,然后对它进行操作,不过我愿意。
更具体地说,我想看看它在模型中附加到它的属性(名称,成本等)和关系(组,子组),以便我可以执行特殊操作并更改内容控制。但似乎无论我尝试什么,我都会得到一个空白的结果集。
我尝试过这样的事情:
LocalContext ctx = new LocalContext();
var ResultSet = ctx.ChairOptions;
ctx.Load(ctx.GetChairOptionsQuery());
但ResultSet始终为空。
我觉得我无法解决这个问题的部分原因是因为我似乎无法确切地知道第2行的赋值中发生了什么,以及Load()函数实际上在做什么第3行。在第一个例子中,它只是自动运行,但我真的很想了解发生了什么。
提前感谢任何帮助或参考。
编辑:
今天早上,当我醒来问题可能是什么时,它才打我。虽然代码使它看起来非常简单和程序化,但Load调用实际上是异步的,对吧?
如果这是正确的,那么问题就变成了,我怎么知道它什么时候结束,以便我可以对结果进行操作?
编辑:
通过这种新的洞察力进行了更多搜索,使我this bit of information了解了如何将回调附加到各个加载操作。但是该链接中提供的类使用了一个名为LoadOperation的对象,虽然看起来LoadOperation在System.Windows.Ria命名空间中,但为它添加一个using不允许Visual Studio将对LoadOperation的引用识别为对象,所以我不能用这个类构建项目。
答案 0 :(得分:0)
This class基本上解决了这个问题。它允许您指定在加载操作完成时要执行的回调(以及允许您同时安排多个加载)。调用回调后,我想要的数据就可以使用,我可以按照自己的意愿操作它。