首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

Silverlight WCF RIA连接数据库,MainPage得不到返回的List,该怎么解决

2012-02-16 
Silverlight WCF RIA连接数据库,MainPage得不到返回的List定义如下一个类:public class CDB_Bureau{public

Silverlight WCF RIA连接数据库,MainPage得不到返回的List
定义如下一个类:
  public class CDB_Bureau
  {
  public string bureauID { set; get; }
  public string name { set; get; }
  }

在DomainService中定义如下一个方法:
[EnableClientAccess()]
  public class DBQueryService : DomainService
  {
  public List<CDB_Bureau> getAllDBBureau(string tablename)
  {
  List<CDB_Bureau> pList = new List<CDB_Bureau>();
  //操作过程省略  
  return pList;
  }
  }

在MainPage中调用过程如下:
定义一个全局变量:List<Web.CDB_BureauData> listBureauData = new List<Web.CDB_BureauData>();

  //再在函数中调用
  private TreeView tree_AddToAccordion(Category category)
  {
  Web.Service.DBQueryContext pService=new Web.Service.DBQueryContext();
  pService.getAllDBBureau("dog_plan_bureau", this.After_getAllDBBureau, null);  
  }

  private void After_getAllDBBureau(InvokeOperation<List<Web.CDB_Bureau>> callback)
  {
  foreach (Web.CDB_Bureau pBU in callback.Value)
  {
  listBureau.Add(pBU);
  }
  }
调试发现,listBureauData为空,没有得到正确的结果。

[解决办法]
getAllDBBureau是否已经运行?试着debug一下,看看数据集合是否返回正常。
[解决办法]
你的 tree_AddDataToTree(pTV ,listBureau); 应该写到 After_getAllDBBureau 里边,而不是 TreeView tree_AddToAccordion 里边。
[解决办法]
编写异步程序,很容易犯下这类函数式思维的毛病。我们使用函数式的编程习惯了,总觉得什么都是“调用函数——等待返回结果——然后执行下一个函数.....”。异步哪里是这个方法啊。

所以我说F#其实也是一种玩具,而不是适合进行大规模异步程序设计的。

热点排行