silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

目录 导言 软件需求 在SQL 2005中创建数据库 在Visual studio 2008中创建Silverlight工程和ADO.NET Data service 创建一个XMLhttprequestWrapper类 在Silverlight中使用Astoria进行CRUD操作 导言 Silverlight 2支持JSON、Web service、WCF以及Sockets等新特性对数据CRUD
@H_450_18@ 目录
  • 导言
  • 软件需求
  • sql 2005中创建数据库
  • 在Visual studio 2008中创建Silverlight工程和ADO.NET Data service
  • 创建一个XMLhttprequestWrapper类
  • 在Silverlight中使用Astoria进行CRUD操作

导言

Silverlight 2支持JSON、Web service、WCF以及Sockets等新特性对数据CRUD操作,这个系列用实例结合数据库一步一步的图文描述来学习一下Silverlight 2 beta 1中进行数据库的CRUD操作方面的实战能力。

这篇文章介绍如何在Silverlight 2 beta 1中使用ADO.NET Data service (Astoria)进行数据CRUD操作。

软件需求

sql 2005中创建数据库

创建一个名为User的表,如下图所示。我在前面一篇文章中详细介绍了,这一篇我们还需要这张表。

Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作

在Visual studio 2008创建Silverlight工程和ADO.NET Data service

1.创建Silverlight工程

第一步:在VS2008中创建一个新的Silverlight工程,命名为:YJingLee.Astoria

Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作

第二步:选择一个ASP.NET Web Site用来托管Silverlight应用程序

Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作

2.添加ADO.NET Entity Data Model新项

第一步:在ASP.NET工程上右击选择“Add New Item...”

第二步:选择“ADO.NET Entity Data Model”新项并单击“OK”按钮

Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作

第三步:在弹出的对话框,要求自动创建App_Code文件夹,单击确定

Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作

第四步:在Entity Data Model向导对话框中选择“General from database”并单击“Next”

Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作

第五步:接着选择连接字符串,如果当前没有连接,单击“New Connection...”创建一个新的连接,完成之后,选择在web.config文件中保存Entiy连接并修改名称。单击“Next”

Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作

第六步:选择表。我只选择了User表,其他的表,视图,存储过程并没有选定,单击“Finish”按钮

Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作

完成之后如下所示

Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作

3.添加ADO.NET Data service新项

第一步:在ASP.NET工程中添加“ADO.NET Data service”新项

Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作

第二步:修改代码。首先,需要为WebDataservice服务设置data model class,我在这里设置如图。其次,设置一些操作。

Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作

这个文件最终代码如下:

public class WebDataservice :
WebDataservice<YJingLeeDBModel.YJingLeeDBEntities>
{
    public static void Initializeservice
      (IWebDataserviceConfiguration config)
    {
        config.SetresourceContainerAccessRule(
            "*",resourceContainerRights.All);
        config.SetserviceOperationAccessRule(
            serviceOperationRights.All);
    }
}

到这里,ASP.NET工程的相关操作就处理完了,最后设置一个固定端口号,我设置为“52600”,编译一下这个工程。

创建一个XMLhttprequestWrapper类

在Silverlight工程中添加一个XMLhttprequestWrapper类,这个类用于封装Javascript的Xmlhttprequest对象,如果你用过AJAX,就很熟悉这个对象在这里,我只不过用C#把这个对象封装成了一个类。

public static class XMLhttprequestWrapper
{
    static ScriptObject _xmlhttprequest;
    public static String dopost(Uri url,String httpVerb)
    {
        return dopost(url,httpVerb,String.Empty);
    }
    public static String dopost(:rgb(43,String httpVerb,String param)
    {
        _xmlhttprequest = HtmlPage.Window.
            CreateInstance("XMLhttprequest");
        _xmlhttprequest.Invoke("open",url,false);
        _xmlhttprequest.Invoke(
            "setrequestHeader","Content-Type",21)">"application/json");
        if (param == String.Empty)
        {
            _xmlhttprequest.Invoke("send");
        }
        else
        {
            _xmlhttprequest.Invoke("send",param);
        }
        ScriptObject dom = (ScriptObject)
                           _xmlhttprequest.GetProperty("responseXML");
        return (String)dom.GetProperty("xml");
    }
}

在Silverlight中使用Astoria进行CRUD操作

创建完这个封装类,我们开始编写代码来使用Astoria进行CRUD操作。在这之前,我们先搞清楚ADO.NET Data service是把数据以服务的形式公开,这样就可以通过浏览器来直接访问数据,每个http动作用来完成数据类型不同。如POST、GET、PUT、deletE,分别用于数据的创建、更新、删除和读取。

这一篇我为了方便前台界面使用上一篇制作的程序界面。上一篇代码已经提供下载。只需简单修改一下后台按钮事件代码就可以了。这里我为了模拟直接在事件中定义了一些属性,像userName和UserID来实现了,大家可以利用上一节的界面把这些属性动态绑定到前台控件上,像上一篇操作一样。

1.创建数据

我们插入新的数据,把数据作为JSON对象,使用POST方式提交给ADO.NET Data service处理,服务器的URL使用硬编码方式。

void createButton_Click(object sender,175)">RoutedEventArgs E)
{
  String userName = "YJingLee";
  String serviceURL ="http://localhost:52600/YJingLee.Astoria_Web/
       WebDataservice.svc/User/";
  String jsonString = "{" + Environment.NewLine + 
      "UserName:\"" + userName;
  jsonString += "\"" + Environment.NewLine + "}" + Environment.NewLine;
  XMLhttprequestWrapper.dopost(
      new Uri(serviceURL),21)">"POST",jsonString);
}

2.读取数据

利用Astoria读取数据有两种方法,可以使用WebClient或者使用XmlhttprequestWrapper类。

使用WebClient

String serviceURL ="http://localhost:52600/YJingLee.Astoria_Web/
                          WebDataservice.svc/User/?$orderby=UserID";
String result = XMLhttprequestWrapper.dopost(
    new "GET");
DisplayUsers(result);

使用XmlhttprequestWrapper

void retrieveButton_Click(object sender,175)">RoutedEventArgs E)
{
    try
    {
        String serviceURL = 
        "http://localhost:52600/YJingLee.Astoria_Web/
                 WebDataservice.svc/User/?$orderby=UserID";
        WebClient astoriaservice = new WebClient();
        astoriaservice.DownloadStringCompleted += 
             new DownloadStringCompletedEventHandler
             (astoriaservice_DownloadStringCompleted);
        astoriaservice.DownloadStringAsync(new Uri(serviceURL));
    }
    catch (Exception eX)
    {
        Console.WriteLine(ex.messagE);
    }
}
void astoriaservice_DownloadStringCompleted
           (object sender,175)">DownloadStringCompletedEventArgs E)
{
    if (e.Error == null)
    {
        DisplayUsers(e.Result);
    }
}

以下方法可以把查询出来的数据绑定到控件上。

private void DisplayUsers(String xmlContent)
{            
  XDocument userdoc = XDocument.Parse(xmlContent);
  XNamespace xmlns = "http://www.w3.org/2005/Atom";
  XNamespace ads = "http://scheR_554_11845@as.microsoft.com/ado/2007/08/dataweb";
  var users = from x in userdoc.Descendants(xmlns + "entry")
                SELEct new User
                {
                    UserID = int.Parse(x.Descendants(ads + "UserID")
                                                   .First().value),UserName = x.Descendants(ads + "UserName")
                               .First().Value
                };
    userList.Itemssource = users;
}

3.删除数据

删除记录需要在URL中指定用户ID,我在这里指定UserID为5的那个记录,通过http deletE请求提交给Astoria删除数据。

String serviceURL = "http://localhost:52600/YJingLee.Astoria_Web/
                    WebDataservice.svc/User(5)/";
XMLhttprequestWrapper.dopost(new "deletE");

至于更新记录好像在这里不方便,我暂时也不知道用什么方法

大佬总结

以上是大佬教程为你收集整理的Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作全部内容,希望文章能够帮你解决Silverlight 2 (beta1)数据操作(3)——使用ADO.NET Data Service (Astoria)进行数据CRUD操作所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。