silverlight获取ado.net数据源

silverlight获取ado.net数据源,第1张

概述现在做一个项目,在数据库和表名以及列名都不确定的情况下,返回查询的数据集。这在ASP.NET或者C/S模式很容易实现。但是在现有的SL+WCF技术下是不能实现的,首先返回值就不好确定,WCF的返回值类型必须是确定的。比较返回值为Object类型就不可以。而且返回DataTable和DataSet又不可以。在客户接收不到数据,返回的数据类型为Object。那么我们可以通过普通的方式取得数据集,然后把 现在做一个项目,在数据库和表名以及列名都不确定的情况下,返回查询的数据集。这在ASP.NET或者C/S模式很容易实现。但是在现有的SL+WCF技术下是不能实现的,首先返回值就不好确定,WCF的返回值类型必须是确定的。比较返回值为Object类型就不可以。而且返回Datatable和DataSet又不可以。在客户接收不到数据,返回的数据类型为Object。那么我们可以通过普通的方式取得数据集,然后把数据集转换为XML格式的字符串,然后在客户端把字符串解析为类型DataSet数据集。

  其实把DataSet数据集转化为XML格式的字符串以及把XML格式的字符串解析为DataSet数据集的工作,已经有加拿大的同行把业务逻辑封装好了,我们只要调用其中的方法就可以了,你也可以反编译看看老外的代码,老外的原文地址:http://silverlightdataset.net/silverlightdataset/Default.aspx,其中用到的组件为Silverlight.DataSetConnector.dll(服务端使用)和Silverlight.DataSet.dll(用于客户端)

 

我们使用原生态的ADO.NET进行数据访问,你也可以替代成你自己的数据ProvIDer.

   1:      [EnableClIEntAccess()]
   2:      public class CustomerDomainService : DomainService
   3:      {
   4:          public List<Item> GetItemsFromDatabase()
   5:          {
   6:              sqlConnection sqlConnection = new sqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MainDb"].ToString());
   7:              DataSet obJset = new DataSet();
   8:              sqlCommand sqlCommand = new sqlCommand();
   9:              sqlCommand.Connection = sqlConnection;
  10:              sqlCommand.CommandText = "Select * FROM tblitem";
  11:              sqlDataAdapter sqlDataAdapter = new sqlDataAdapter();
  12:              sqlDataAdapter.SelectCommand = sqlCommand;
  13:              sqlDataAdapter.Fill(obJset);
  14:   
  15:              List<Item> lstResult = new List<Item>();
  16:              Item objEmployee;
  17:   
  18:              if (obJset.tables.Count > 0)
  19:              {
  20:                  foreach (DaTarow dr in obJset.tables[0].Rows)
  21:                  {
  22:                      objEmployee = new Item();
  23:                      objEmployee.Quantity = Convert.ToInt32(dr["Quantity"]);
  24:                      objEmployee.ItemDescription = dr["ItemDescription"].ToString();
  25:                      objEmployee.ItemNumber = Convert.ToInt32(dr["ItemNumber"]);
  26:                      lstResult.Add(objEmployee);
  27:                  }
  28:              }
  29:              return lstResult;
  30:          }
  31:      }

 

 

 但是SL的DataGrID不接受DATASET或者Datatable类型的数据源的,他接受的是实休集合。所以我们就需要扩展SL的DataGrID,使其变为像ASP.NET中的DataVIEw那样,有DataSource属性,有DataBind方法。这个有源代码可以下载,你可以根据自己的需要再来扩展。下载地址为:http://slbindabledatagrID.codeplex.com/,其实这个方法的核心还是要把数据集转化为List类型的集合,然后这个结果再赋值给DataGrID

总结

以上是内存溢出为你收集整理的silverlight获取ado.net数据源全部内容,希望文章能够帮你解决silverlight获取ado.net数据源所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存