本文将建立一个最简单的WCF RIA Services访问数据库的实例,附带有数据库文件,可以在Sql Server中附加数据库,在本文中并没有采用ADO.NET实体数据模型绑定数据库,而是单独写一个类来连接数据库查询数据表并返回值,下面我们看详细步骤。
第一步:首先我们打开VS2010,新建一个Silverlight应用程序项目SLGetDataFromWCFRIA。
第二步:点击确定之后,在弹出的“新建Silverlight应用程序”窗口中,选中“启用 WCF RIA 服务”复选框然后确定。
第三步:在创建好的项目中,鼠标右键点击“SLGetDataFromWCFRIA.Web”项目,然后“添加”-->“新建项”-->“WCF服务”,命名为SLWCFRIA.svc。
第四步:在上一步生成的ISLWCFRIA.cs文件中,我们可以定义相关的通信的契约,在本实例中我们定义一个string GetData()契约。
第五步:在SLWCFRIA.svc.cs文件中我们实现这个契约函数,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace SLGetDataFromWCFRIA.Web
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“SLWCFRIA”。
public class SLWCFRIA : ISLWCFRIA
{
public void DoWork()
{
}
public string GetData()
{
DataSet ds = DB.Getdata( " select * from userinfo " );
return ds.GetXml();
}
}
}
第七步:我们在SQL SERVER2008中创建一个示例数据库名为SLRiaTest。在这个数据库里面新增一个UserInfo表,在里面添加字段如下:
第八步:编写一个类,来连接SLRiaTest数据库,获取DataSet数据集。
第九步:鼠标右键点击SLGetDataFromWCFRIA项目“添加服务引用”即引用刚才我们编写的WCF服务。
第十步:添加一个UserInfo的实体类集合。代码如下:
/// <summary>
/// 用户实体类
/// </summary>
public class UserInfo
{
private string _ID;
private string _UserName;
private string _UserAddr;
private string _UserTel;
public string ID
{
get { return _ID; }
set { _ID = value; }
}
public string UserName
{
get { return _UserName; }
set { _UserName = value; }
}
public string UserAddr
{
get { return _UserAddr; }
set { _UserAddr = value; }
}
public string UserTel
{
get { return _UserTel; }
set { _UserTel = value; }
}
}
第十一步:点击MainPage.xaml文件,添加一个DataGird控件命名为grShow,在MainPage.xaml.cs文件中编写以下代码获取WCF RIA services读取到的数据库数据:
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
// 创建一个代理类的实例
SLWCFRIAClient client = new SLWCFRIAClient();
// 调用GetData方法并加载事件
client.GetDataAsync();
client.GetDataCompleted += new EventHandler < GetDataCompletedEventArgs > (client_GetDataCompleted);
}
public List < UserInfo > userList = new List < UserInfo > ();
void client_GetDataCompleted( object sender, GetDataCompletedEventArgs e)
{
using (XmlReader xReader = XmlReader.Create( new StringReader(e.Result)))
{
// XmlReader读取XML数据
while (xReader.ReadToFollowing( " Table " ))
{
xReader.ReadToDescendant( " ID " );
string id = xReader.ReadElementContentAsString();
xReader.ReadToNextSibling( " UserName " );
string username = xReader.ReadElementContentAsString();
xReader.ReadToNextSibling( " UserAddr " );
string useraddr = xReader.ReadElementContentAsString();
xReader.ReadToNextSibling( " UserTel " );
string usertel = xReader.ReadElementContentAsString();
// 实例化类并添加进实体类List<>
UserInfo uinfo = new UserInfo(){ID = id, UserName = username,UserAddr = useraddr,UserTel = usertel};
userList.Add(uinfo);
}
this .grShow.ItemsSource = userList;
}
}
}
最后我们看最后的效果图,本实例采用VS2010+Silverlight 4.0+MS SQL SERVER 2008,点击 SLGetDataFromWCFRIA.rar 下载本实例源码和示例数据库。
本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/03/28/1996434.html,如需转载请自行联系原作者