为Silverlight项目创建通用WebService数据访问
2011-09-14 09:10
447 查看
在使用Silverlight之前,我们创建了自己的webService做为通用数据访问。开发者传递一个Sql语句 ,即可得到一个DataSet,DataTable作为返回值。在Silverlight项目中,由于其对DataTable的限制,我 们不得不首先得到DataTable,而后在本地再创建Web service(WCF),对得到的DataTable进行转换。转换 为数组或者泛型集合以适应Silverlight的需要。
但是这样做难免有些繁琐,且开发者做出了很多费力的工作。
这里,我们对原来的Webservice做出了一些改动:但凡返回值为DataSet的webMethod都为其加上一层 “外衣”,将其转化为XElement后返回给调用者一个XML档案。开发者只需利用LINQ TO Xml通过简单的 xml操作就可得到需要的集合。这样就免除了每个专案建立“自己”的service的工作。
下面通过一个简单的Demo对这个操作做出说明:
根据得到的DataTable,为其创建XElement作为返回值
但是这样做难免有些繁琐,且开发者做出了很多费力的工作。
这里,我们对原来的Webservice做出了一些改动:但凡返回值为DataSet的webMethod都为其加上一层 “外衣”,将其转化为XElement后返回给调用者一个XML档案。开发者只需利用LINQ TO Xml通过简单的 xml操作就可得到需要的集合。这样就免除了每个专案建立“自己”的service的工作。
下面通过一个简单的Demo对这个操作做出说明:
根据得到的DataTable,为其创建XElement作为返回值
static void Main(string[] args) { //获取数据源DataTable DataTable dt = client.ExecuteQuery(sql).Tables[0]; //创建Xml Document XDocument doc= new XDocument( new XElement("tables", new XAttribute("xmlns", ""), new XElement("table", new XAttribute("name", "0"), new XElement("columns"), new XElement("rows"))) ); XElement columns = doc.Element("tables").Element ("table").Element("columns"); foreach (DataColumn col in dt.Columns) { //新增一个Element Column columns.Add(new XElement("column", new XAttribute("name", col.ColumnName), new XAttribute("type", col.DataType.Name) )); } XElement rows = doc.Element("tables").Element("table").Element ("rows"); foreach (DataRow row in dt.Rows) { //新增一个element Row XElement newrow = new XElement("row"); rows.Add(newrow); string data = null; foreach (DataColumn col in dt.Columns) { switch (col.DataType.Name) { case "DateTime": data = (row[col] == DBNull.Value ? "" : Convert.ToDateTime(row[col]).ToString("yyyy/MM/dd HH:mm:ss")); break; default: data = (row[col] == DBNull.Value ? "" : row[col].ToString()); break; } //为新增的row添加Attribute newrow.Add(new XAttribute(col.ColumnName, data) ); } } XElement element = doc.Element("tables"); Console.WriteLine(element.ToString()); }
相关文章推荐
- 为Silverlight项目创建通用WebService数据访问
- 为Silverlight 项目创建通用WebService数据访问
- 为Silverlight 项目创建通用WebService数据访问
- Webservice 之eclipse 创建axis1.4项目
- vs2010 sp1 创建silverlight 时,提示我 “在创建silverlight项目之前,您需要安装最新的silverlight Developer运行时
- 创建自定义行为并在Silverlight项目中使用
- Silverlight项目发布无法访问WebService接口问题
- 用eclipse创建WebService项目
- VS2010创建SILVERLIGHT项目时提示“你需要安装最新的SILVERLIGHT DEVELOPER运行时”解决方法
- VS2008正式版创建silverlight项目失败的解决办法
- 创建自定义行为并在Silverlight项目中使用
- VS2010创建SILVERLIGHT项目时提示“你需要安装时新的SILVERLIGHT DEVELOPER运行时”的解决方法?
- webservice之cxf服务端及客户端实现(maven创建web项目)
- 在Silverlight类库项目中创建模板化控件
- 精通Silverlight——12.5.1 创建Silverlight类库项目
- VS2008创建Silverlight项目时出错解决方法
- 如何创建新 Silverlight 项目
- vs2010 sp1 创建silverlight 时,提示我 “在创建silverlight项目之前,您需要安装最新的silverlight Developer运行时
- VS2008创建或加载Silverlight项目出错的解决办法
- SilverLight3.0 系列之二, 创建新项目