微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【SilverLight】存取Domain Service数据完成后的动作

摘要:【SilverLight】存取Domain Service数据完成后的动作


刚开始学会用Domain Service存取数据时,我兴冲冲的写了一支小程序来测试:


public MainPage()
{
    InitializeComponent();
    Web.WCFDATA db = new Web.WCFDATA();
    var data = db.Load(db.GetMsgQuery()).Entities;
    MessageBox.Show(data.Count().ToString());
}

结果MessageBox秀出来的是0,这一点也不意外,我们都知道SilverLight必须依靠Domain Service来存取数据,且是以异步的方式存取,数据还没有读取完,MessageBox已经先执行了,所以结果会是0。

这个结果告诉我们,撰写SilverLight读取数据时,必须特别注意异步这个点,否则会出现意想不到的结果。

如果想在数据读取完成后,秀出共有几笔数据,上面的程序必须改写,原本程序用的Load方法并没有侦测数据读取是否完成,我们必须用其他的方法,最后我找到了另一个Load方法,MSDN定义如下:


public LoadOperation Load(
    EntityQuery query,
    Action callback,
    Object userState
)
where TEntity : Entity

其中第二个参数是一个Action>委派,我们可以用这个枚举来执行数据完成后的动作。修改后的程序如下:


public MainPage()
{
   InitializeComponent();
   Web.WCFDATA db = new Web.WCFDATA();
   db.Load(db.GetMsgQuery(), ShowMsg, null);
}
       
public void ShowMsg(LoadOperation m)
{
   MessageBox.Show(m.Entities.Count().ToString());
}

原本我们是将db.Load的结果指定给data变量,然后去秀出data的笔数,修改后的程序我们新增一个符合Action> 枚举的方法,然后带入Load参数里,这个方法可以取得Load回传的LoadOperation,接着用取得的回传值去秀出笔数,执行后果然可以正确秀出笔数。

原文:大专栏  【SilverLight】存取Domain Service数据完成后的动作


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐