为Silverlight项目创建通用WebService数据访问
来源:互联网 发布:图书馆数据库 编辑:程序博客网 时间:2024/06/15 09:07
在使用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作为返回值
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 4访问 Webservice
- Silverlight 动态访问Webservice
- Silverlight数据访问问题
- 如何创建Silverlight 项目
- 编写通用数据访问
- android 项目 访问webservice
- Silverlight跨域访问WebService解决方法
- WebService访问数据
- silverlight系列(子窗口创建、引用webservice)
- 创建一个WebService项目
- 创建WebService项目
- Silverlight项目发布无法访问WebService接口问题
- 如何创建新Silverlight项目
- 如何创建新 Silverlight 项目
- 通用数据访问之我见
- Helper 数据访问通用类
- 41个 IE layout BUG
- jQuery对象与dom对象相互转换
- 思科路由器引擎的冗余模式 HSA、RPP、RPR+、SSO
- PHP操作MYSQL函数手册大全
- 数据库中的超码、候选码、主码
- 为Silverlight项目创建通用WebService数据访问
- javascript类型判断 typeof instanceof constructor
- 如何查询第m条到第n条记录
- 局域网内网络断断续续?ARP攻击?
- 隐藏SSMS和Visual Studio上广播的SQL Server服务器名
- js技巧
- Qt学习(1)
- python 私有机制
- Source Insight 3.5 序列号分享