`
gstarwd
  • 浏览: 1547437 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SilverLight数据库访问示例

阅读更多

SilverLight 目前已经成为互联网 应 用当中的终点,其本身具有的巨大市场前景,尤其是提供丰富的网路表示控件方面已经成为了flash的最大竞争对手,几天我们通过一个简单的示例演示如何使 用SilverLight创建一个使用数据访问的应用,同时为了配合微软最新的.NET 3.5技术,这个例子还将使用微软的LINQ数据源作为数据集合的基础,使用WC F进行远程的数据访问,从而实现分布式调用。

    整个过程共分为5个部分

    1. 创建一个SilverLight应用
    2. 创建一个使用LINQ的数据源映射对象
    3. 创建一个WC F应用
    4. 在SilverLight中添加对WCF的引用
    5. 在SilverLight添加DataGrid数据显示控件

    1 创建一个SilverLight应用

    本程序使用Visual Studio 2008中创建新的SilverLight应用。在Visual Studio 2008中只要安装了SilverLight 2.0 Beta 1的Visual Studio 2008模板即可看到如下图1.1所示的新工程模板,

 

    图1.1 新建SilverLight 2.0工程

    在新建Sl工程的时候有一个选项,就是是否添加Asp.NET的网站作为宿主如下图1.2所示

 

    图1.2 选择是否添加Asp.net网站应用

    在这里我们为了后面编辑数据库应用服务器 ,选择添加ASP.NET 2.0的网站,添加之后的工程窗体项目文件如下图1.3所示

 

    1.3 添加工程以后的应用界面

    可以看到Sl被编译成为了一个SilverLightDemo.xap文件,这个文件到底是什么内容呢,我们在这里对它的内容进行解密,首先修改文件后缀 为zip之后解压缩,就可以看到文件是把SL运行需要调用的程序打包之后随应用程序提供。图1.4显示了这几个文件

 

    图1.4 SilverLightDemo.xap所包含的文件

    这些文件除了基本的SL库文件之外还有一个应用程序描述文件,AppMainfest.xaml,这个文件记录了当前应用程序所使用的基本业务逻辑和表示层内容。

    2 创建一个使用LINQ的数据库映射对象

    下一步就要建立一个数据库,这里首先建立一个数据库表结构,本例中我们建立的是一个微软的NorthWind数据库中的Custom表进行数据访问,该数据库从微软的官方网站就可以下载http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&displaylang=en

    数据库表结构如下图1.5所示

    图1.5 Customers表结构

    下一步添加LINQ表引用数据库,首先添加LINQ实体对象如下图1.6所示:

 

    图 1.6 显示添加了一个LINQ to sql对象

    添加之后就可以通过服务器 浏览器找到数据库实体,并把它添加到LINQ实体当中,添加的方法很简单,只需要拖拽表即可。添加之后如图1.7所示

 

    图1.7 添加Customer之后就可以这个表结构

    这里我们还要对数据库进行添加,所以需要对数据库添加进行验证,这一验证会影响我们后面的数据库更新操作,所以需要修改每一个字段的属性为UpdateCheck Never,如下图1.8所示

 

    图1.8 修改字段更新方式

    3.添加WCF引用服务

    下一步即可添加一个WCF引用服务,这里的WCF服务添加是在工程中添加一个WCF Service,如下图1.9所示:

 

    图1.9 WCFService添加效果图

    添加之后WCF Service文件会创建2文件IServic.cs和Service.cs文件,前者定义接口的契约描述,后者定义实际接口的内容,我们首先对前者进行编程,说明服务器契约内容。代码如下所示
    

[OperationContract]
        List<customer> GetAllCustomer();

        [OperationContract]
        Product SaveCustomer (Customer customer);

        [OperationContract]
        void DeleteCustomer (Customer Customer);

    定义接口之后,接口的实现相对简单,只需要在Service.cs文件中使用如下图1.20所示技巧,即可实现基本功能

 

    图1.20 实现接口内容


    接口层实现的代码如下所示

public List<Customer> GetAllCustomer()
    {
        DataClassesDataContext db = new DataClassesDataContext();
        var customer = from p in db.Customers
                       select p;
        return customer.ToList<Customer>;
    }

    public Product SaveCustomert(Customer customer)
    {
        DataClassesDataContext db = new DataClassesDataContext();
        if (customer.CustomerID > 0)
        {
            //表示该结果已经存在,所以要更新记录
            db.Customers.Attach(customer, true);
        }
        else
        {
            //表示结果不存在,这时候插入记录
            db.Customers.InsertOnSubmit(customer);
        }
        db.SubmitChanges();
        return customer;
    }

    public void DeleteCustomer(Customer customer)
    {
        DataClassesDataContext db = new DataClassesDataContext();
        db.Customers.Attach(customer, true);
        db.Customers.DeleteOnSubmit(customer);
        db.SubmitChanges();
    }

    这里还需要注意一个细节,因为WCF Service调用方式有很多,其中http方式是使用比较方便的,也是本例中要进行使用的,而默认建立的时候调用方式是wsHttpBinding,这 里要通过修改Web.Config文件来实现修改绑定方式为BasicHttpBinding。

<system.serviceModel>
<behaviors>
   <serviceBehaviors>
    <behavior name="ServiceBehavior">
     <serviceMetadata httpGetEnabled="true" />
     <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
   </serviceBehaviors>
</behaviors>
<services>
   <service behaviorConfiguration="ServiceBehavior" name="Service">
    <endpoint address="" binding="BasicHttpBinding" contract="IService">
     <identity>
      <dns value="localhost" />
     </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
   </service>
</services>
</system.serviceModel>
    最后,还需要指定系统使用固定端口进行编译,以防止应用Silverlight无法访问到应用端口导致出错,如下图1.21所示

 


    
    图1.21设置静态端口,这里使用的2041端口


    4. 在SilverLight中添加WCF引用

    首先在SL中添加对WCF Service的引用如下图1.22所示

 


    
    图1.22 添加对WCF Service的引用

    添加之后如图1.23所示

 


    
    图1.23 添加了Service引用的结果

    这里有个技巧,在添加的时候只需要选择Discovry方式就可找到当前工程中的wcf应用。

    6 在SL添加DataGrid显示数据

    在SL中通过toolbox可以找到用于显示数据的DataGrid,如图1.24所示

 


    
    图1.24 DataGrid控件

    这里需要注意的是,不能把DataGrid直接拖拽到设计界面,而应该拖拽到代码界面来,拖拽之后在后置代码中指定其数据源为LINQ返回的数据实体即可。

    在页面的Load事件当中添加如下代码

var client = new NorthwindServiceClient();
    client.GetProductsCompleted +=
        new EventHandler<GetProductsCompletedEventArgs>(client_GetProductsCompleted);
client.GetProductsAsync(txtProductString.Text);
    然后在绑定函数中使用dataGridResults.ItemsSource = e.Result;即可实现绑定,这里需要注意的是dataGridResults是在前置代码中通过设置x:name来设置的DataGrid控件名称。

    至此一个使用Sl的三层架构应用就完成了。希望大家在动手实践过程中可以熟悉LINQ和WCF的一些基本设置和用法,并对SL的用法熟悉。

分享到:
评论

相关推荐

    Silverlight连接数据库简单示例

    **Silverlight连接数据库简单示例** Silverlight是微软推出的一种RIA(Rich Internet Application)技术,它允许开发人员创建丰富的、交互式的Web应用程序。在本示例中,我们将探讨如何使用Silverlight来连接数据库...

    Silverlight与数据库交互示例

    ### Silverlight与数据库交互示例 #### 一、概述 随着Web 2.0时代的到来,用户对于网页的互动性和视觉效果的要求越来越高。Silverlight作为微软推出的一种强大的跨浏览器、跨平台的应用框架,旨在为用户提供丰富的...

    Silverlight与数据库交互示例.pdf

    本文将详细介绍如何使用Silverlight与数据库进行交互,以一个简单的示例展示Silverlight结合.NET 3.5技术,特别是LINQ数据源和WCF服务,实现分布式数据访问。以下是整个过程的详细步骤: 1. 创建Silverlight应用 ...

    Silverlight与数据库交互示例[整理].pdf

    本文将详细介绍如何使用Silverlight与数据库进行交互,通过一个简单的示例展示如何构建一个基于.NET 3.5技术,利用LINQ数据源和WCF进行远程数据访问的应用。以下是整个过程的详细步骤: 1. 创建Silverlight应用 ...

    2_Silverlight访问MSSQL数据库(2)

    ### Silverlight访问MSSQL数据库知识点详解 #### 一、配置Web.Config文件 在使用Silverlight访问MSSQL数据库之前,需要对项目的`Web.Config`文件进行必要的配置。这一环节至关重要,因为它涉及到如何正确地与...

    Silverlight数据库DataSet文档教程

    ### Silverlight数据库DataSet文档教程 #### 一、引言 在进行Silverlight开发时,由于其安全性限制,直接连接数据库是不可行的。通常的做法是通过Web服务(如WCF)间接访问数据库。然而,这样的设计增加了项目的...

    详解Silverlight访问SQL数据库

    ### 详解Silverlight访问SQL数据库 #### 背景与目的 Silverlight是Microsoft推出的一款用于构建丰富的互联网应用程序(RIA)的技术,它提供了强大的多媒体、动画以及与浏览器交互的能力。然而,除了前端的展示能力...

    silverlight访问oracle数据库实例

    综上所述,"silverlight访问oracle数据库实例"涉及的关键技术包括Silverlight的UI设计和事件处理,WCF服务的创建与配置,以及Oracle数据库的访问。通过WCF_DEMO压缩包中的示例代码,我们可以深入理解并实践这些概念...

    ASP.NET源码——silverlight访问数据库汇总.zip

    总之,这个压缩包提供了一个学习和实践ASP.NET Silverlight数据库访问的宝贵资源,涵盖了从基本的数据访问技术到高级的实时数据同步策略。通过研究这些示例,开发者可以提升在ASP.NET和Silverlight环境中进行数据库...

    silverlight访问数据库汇总

    5. **Entity Framework (EF)**: Entity Framework 是微软提供的一个对象关系映射(ORM)框架,它可以将数据库模型转化为.NET对象,简化数据库访问。在 Silverlight 中,EF 通常结合 ADO.NET Data Services 使用,...

    5Silverlight访问数据库之Access数据库[归类].pdf

    1. **Silverlight与数据库访问技术**:Silverlight 是一个跨浏览器的、跨平台的插件,用于创建和交付下一代互联网络媒体体验和丰富的交互式应用程序。在文件中,提到了如何使用Silverlight来访问数据库,特别是...

    silverlight 数据库连接源代码

    Silverlight应用程序通常运行在浏览器中,由于安全性限制,它们不能直接访问本地系统资源,包括数据库。这就是WCF服务发挥作用的地方。WCF服务作为一个中间层,可以在服务器端处理数据库操作,然后将结果传递给...

    Silverlight连接数据数据库DataSet填充数据

    请注意,为了在Silverlight中运行这段代码,你可能需要使用`IsolatedStorage`来保存连接字符串,因为Silverlight应用无法直接访问本地文件系统。 一旦数据填充到DataSet,你就可以在Silverlight用户界面中显示这些...

    Silverlight数据库DataSet

    在提供的压缩包文件中,"Silverlight 数据库 DataSet.docx"可能包含了更详细的步骤和示例代码,而"SilverlightApplicationDemo"可能是实际的项目代码,可以作为参考来实践这个过程。 总之,通过直接使用DataSet在...

    silverlight访问数据库汇总_aspx开发教程.rar

    Silverlight中的数据库访问通常通过ADO.NET Entity Framework或WCF RIA Services实现。Entity Framework是一种ORM(对象关系映射)工具,它可以将数据库表映射为对象,简化数据访问。WCF RIA Services则提供了一种...

    [其他类别]silverlight访问数据库汇总_review(ASP.NET源码).rar

    【描述】:“[其他类别]silverlight访问数据库汇总_review(ASP.NET源码).rar”说明这是一个关于Silverlight数据库操作的综合回顾,其中包含了通过ASP.NET编写的源代码示例。这可能包括多种不同的数据访问策略和...

    silverlight MVVM模式示例

    综上所述,"Silverlight MVVM模式示例"项目旨在通过实践帮助初学者理解并掌握MVVM模式在Silverlight中的应用。通过查看项目中的"SilverlightMVVM"文件,你将能够看到如何创建模型、视图和视图模型,以及如何利用数据...

Global site tag (gtag.js) - Google Analytics