RIA服务:加载返回没有数据

时间:2011-02-18 07:09:14

标签: silverlight binding service ria

在nikhilk Kothary的BookClub示例应用程序中,组合框用于显示图书类别。

在viewmodel类中是这样的(应用程序正在使用MVVM模式):

private ReferenceDataContext _referenceData;

public BookClubModel(){//构造函数     _referenceData = new ReferenceDataContext();

_referenceData.Load(_referenceData.GetcategoriesQuery(), false);

}

然后有一个comboxbox绑定的属性:

public IEnumerable Categories {     得到{         return _referenceData.Categories;     } }

为什么这样有效?我们不应该为加载操作设置一个“已完成”的事件处理程序吗?

如果我想在构造函数中填充IEnumerable属性,那么它不起作用:

private ReferenceDataContext _referenceData;

私人IEnumerable _categories;

public BookClubModel(){//构造函数     _referenceData = new ReferenceDataContext();

_referenceData.Load(_referenceData.GetcategoriesQuery(), false);

_categories = _referenceData.Categories; _referenceData.Categories was what we were returning in the Categories property above.

}

为什么它适用于一个案例而不适用于另一个案例?

丹尼尔

1 个答案:

答案 0 :(得分:1)

在第一种情况下Categories引用_referenceData.Categories。当_referenceData.Categories集合更新后,Categories也会更新。

在第二种情况下,您需要Load操作的事件处理程序,然后使用加载的实体执行您想要的操作。

在内部调用Load时,对数据库的查询正在执行,并且在获取结果时会调用load operation callback。加载操作是异步操作,你需要记住这个事实