silverlight 通过WCF与LinQ对数据库进行操作1

    本实例演示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)……”

silverlight 通过WCF与LinQ对数据库进行操作1_第1张图片

3.在浏览里找到刚刚建好的数据库Sil_Test.mdf,点击确定(连接前要确定数据库y已经断开和SQL Server Management studio的连接)

silverlight 通过WCF与LinQ对数据库进行操作1_第2张图片

4.这时在服务器视图中可以看到新建的表Person。在VS解决方案视图的web项目上点击右键->添加->新建项,在弹出的窗口中选择LinQ To SQL类

silverlight 通过WCF与LinQ对数据库进行操作1_第3张图片

5.拖动person表到DataClasses1.dbml中,visual studio 2010会自动建立相应类及关系。

silverlight 通过WCF与LinQ对数据库进行操作1_第4张图片

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分别用于输入姓名和年龄,按钮用于触发插入事件。

silverlight 通过WCF与LinQ对数据库进行操作1_第5张图片

双击“插入”按钮,进入事件处理代码,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表发现里面多了一条数据
目前进度代码:http://files.cnblogs.com/infly123/SilverlightApplication8.rar

关于查询、修改、删除数据库的数据及数据与DataGrid控件的绑定,请继续关注我的博客,我会在此软件基础上继续更新

 

你可能感兴趣的:(silverlight)