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#其实也是一种玩具,而不是适合进行大规模异步程序设计的。