本实例演示silverlight通过WCF与简单的LinQ语句对SQL数据库进行简单的增删改查。参考《银光志 silverlight 3.0开发详解与最佳实践》一书。
1.首先在SQL Server Management studio中创建一个名为Sil_Test的数据库,在Sil_Test中创建表Person,表结构如下:
其中id为自动增长主键,不允许空值。
2.在Visual Studio 2010中创建silverlight应用程序SilverlightApplication8。打开VS中的服务器资源管理器视图,右键数据连接,选择“添加连接(A)……”
3.在浏览里找到刚刚建好的数据库Sil_Test.mdf,点击确定(连接前要确定数据库y已经断开和SQL Server Management studio的连接)
4.这时在服务器视图中可以看到新建的表Person。在VS解决方案视图的web项目上点击右键->添加->新建项,在弹出的窗口中选择LinQ To SQL类
5.拖动person表到DataClasses1.dbml中,visual studio 2010会自动建立相应类及关系。
6.同样在VS解决方案视图的web项目上点击右键->添加->新建项,选择WCF服务,默认名称为Service1.svc.在Service1.svc中输入如下代码添加插入数据方法:
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“Service1”。 public class Service1 : IService1 { public void DoWork() { } public void Insert(string pName,int pAge) { DataClasses1DataContext dc = new DataClasses1DataContext(); person p = new person() { name = pName, age = pAge }; dc.person.InsertOnSubmit(p); dc.SubmitChanges(); } }
并在IService1中加入Insert方法:
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。 [ServiceContract] public interface IService1 { [OperationContract] void DoWork(); [OperationContract] void Insert(string pName, int pAge); }
这样web端的WCF就完成了,在项目silverlightApplic8内的引用中右击找到“添加服务引用”,点击“发现”,会自动找到WCF服务,选中后点击确定。
现在打开MainPage.xaml,拖入两个textbox分别用于输入姓名和年龄,按钮用于触发插入事件。
双击“插入”按钮,进入事件处理代码,MainPage代码如下:
public partial class MainPage : UserControl { ServiceReference1.Service1Client proxy = new ServiceReference1.Service1Client(); public MainPage() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { string name = textBox1.Text; int age = Convert.ToInt32(textBox2.Text); proxy.InsertAsync(name, age); } }
现在启动silverlight程序,输入一个姓名及年龄,点击”插入“,再查看数据库里Person表发现里面多了一条数据
目前进度代码:https://files.cnblogs.com/infly123/SilverlightApplication8.rar
关于查询、修改、删除数据库的数据及数据与DataGrid控件的绑定,请继续关注我的博客,我会在此软件基础上继续更新