演练:在 Visual Studio 中创建和访问 WCF 数据服务

本演练演示如何创建一个承载于 ASP.NET Web 应用程序中的简单 WCF 数据服务,然后从 Windows 窗体应用程序中访问它。

在此演练中,将:

  • 创建 Web 应用程序以承载 WCF 数据服务。

  • 创建一个表示 Northwind 数据库中 Customers 表的 实体数据模型。

  • 创建 WCF 数据服务。

  • 创建一个客户端应用程序,并添加对 WCF 数据服务的引用。

  • 启用对该服务的数据绑定并生成用户界面。

  • 可以选择向应用程序添加筛选功能。

系统必备

您需要以下组件来完成本演练:

创建服务

若要创建 WCF 数据服务,您将添加一个 Web 项目,创建一个实体数据模型,然后通过此模型创建服务。

首先,将添加一个 Web 项目以承载服务。

说明说明

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置

创建 Web 项目

  1. 在 Visual Studio 的**“文件”菜单上单击“新建项目”**。

  2. 新建项目 对话框中,展开 Visual BasicVisual C# 节点并单击 Web,然后选择 ASP.NET Web 窗体应用程序

  3. 在**“名称”字段中,键入“NorthwindWeb”,然后单击“确定”**创建项目。

在此步骤中,您将创建一个表示 Northwind 数据库中 Customers 表的 实体数据模型。

创建实体数据模型

  1. 在**“项目”菜单上,单击“添加新项”**。

  2. 添加新项 对话框中,选择" 数据,然后选择 ADO.NET 实体数据模型

  3. 在**“名称”字段中,键入 NorthwindModel,然后单击“添加”**。

    将显示实体数据模型向导。

  4. 在实体数据模型向导中,选择**“从数据库生成”,然后单击“下一步”**。

  5. 在**“选择您的数据连接”**页上执行下列步骤之一:

  6. 如果数据库需要密码,请选择该选项以包括敏感数据,再单击**“下一步”**。

    说明说明

    如果出现一个对话框,请单击“是”将该文件保存到您的项目中。

  7. 在**“选择数据库对象”页中,展开“表”节点,选中“Customers”旁边的复选框,然后单击“完成”**。

    随即显示实体模型关系图,NorthwindModel.edmx 文件也将添加到项目中。

在此步骤中,您将创建并测试数据服务。

创建数据服务

  1. 在**“项目”菜单上,单击“添加新项”**。

  2. 添加新项 对话框中,选择的 Web 然后选择 WCF 数据服务

  3. 在**“名称”字段中,键入 NorthwindCustomers,然后单击“添加”**。

    NorthwindCustomers.svc 文件将显示在**“代码编辑器”**中。

  4. 在**“代码编辑器”**中,定位到第一个 TODO: 注释并使用以下内容替换该代码:

    Inherits DataService(Of northwindEntities)
    
    public class NorthwindCustomers : DataService<northwindEntities>
    
    说明说明

    根据所使用的 Northwind 数据库的版本,您可能需要将“NORTHWIND”更改为“NORTHWND”。还可以使用 IntelliSense 来发现正确的名称。

  5. 使用下面的代码替换 InitializeService 事件处理程序中的注释:

    config.SetEntitySetAccessRule("*", EntitySetRights.All)
    
    config.SetEntitySetAccessRule("*", EntitySetRights.All);
    
  6. 按“Ctrl+F5”运行此服务。将打开一个浏览窗口,并显示该服务的 XML 架构。

  7. 在**“地址”**栏中,在 NorthwindCustomers.svc 的 URL 末尾处键入 Customers,然后按 Enter。

    Customers 表中的数据将以 XML 表示形式显示。

    说明说明

    某些情况下,Internet Explorer 会将数据错误解释为 RSS 源。必须确保禁用显示 RSS 源的选项。有关更多信息,请参见服务引用疑难解答

  8. 关闭浏览器窗口。

在接下来的步骤中,将创建一个 Windows 窗体客户端应用程序以使用该服务。

创建客户端应用程序

若要创建客户端应用程序,您将另外添加一个项目,添加对该项目的服务引用,配置数据源,并创建一个用户界面以显示服务中的数据。

在第一个步骤中,您将 Windows 窗体项目添加到解决方案中,并将其设置为启动项目。

创建客户端应用程序

  1. 在 Visual Studio**“文件”菜单上单击“添加”,然后单击“新建项目”**。

  2. 在**“新建项目”对话框中,展开“Visual Basic”“Visual C#”节点,接着单击“Windows”,然后选择“Windows 窗体应用程序”**。

  3. 在**“名称”字段中,键入 NorthwindClient,然后单击“确定”**打开项目。

  4. 在**“解决方案资源管理器”**中,选择 NorthwindClient 项目。

  5. 在**“项目”菜单上单击“设为启动项目”**。

在此步骤中,将添加对 Web 项目中的 WCF 数据服务的服务引用。

添加服务引用

  1. 在**“项目”菜单上单击“添加服务引用”**。

  2. 在**“添加服务引用”对话框中,单击“发现”**。

    NorthwindCustomers 服务的 URL 将显示在**“地址”**字段中。

  3. 单击**“确定”**以添加此服务引用。

在此步骤中,将配置数据源以启用对服务的数据绑定。

启用对服务的数据绑定

  1. 在**“数据”菜单上,单击“显示数据源”**。

  2. 在**“数据源”窗口中,单击“添加新数据源”**。

  3. 在**“数据源配置向导”“选择数据源类型”页上,单击“对象”,然后单击“下一步”**。

  4. 在**“选择希望绑定到的对象”页上,展开“NorthwindClient”节点,然后展开“NorthwindClient.ServiceReference1”**节点。

  5. 选择**“Customers”,然后单击“完成”**。

在此步骤中,您将创建用于显示服务中的数据的用户界面。

创建用户界面

  1. 将**“Customers”节点从“数据源”**窗口拖动到窗体中。

    一个 DataGridView 控件、一个 BindingSource 组件以及一个 BindingNavigator 组件将添加到窗体中。

  2. 双击窗体以打开代码编辑器,然后向 Form1_Load 事件处理程序添加以下代码:

           Dim proxy As New ServiceReference1.northwindModel.northwindEntities _
    (New Uri("https://localhost:53161/NorthwindCustomers.svc/"))
           Me.CustomersBindingSource.DataSource = proxy.Customers
    
               ServiceReference1.northwindModel.northwindEntities proxy = new
    ServiceReference1.northwindModel.northwindEntities(new
    Uri("https://localhost:53397/NorthwindCustomers.svc/"));
               this.customersBindingSource.DataSource = proxy.Customers;
    
    说明说明

    根据所使用的 Northwind 数据库的版本,您可能需要将“NORTHWIND”更改为“NORTHWND”。还可以使用 IntelliSense 来发现正确的名称。

  3. 在**“解决方案资源管理器”中,右击 NorthwindCustomers.svc 文件,然后单击“在浏览器中查看”**。Internet Explorer 随即打开,并显示该服务的 XML 架构。

  4. 从 Internet Explorer 地址栏中复制 URL。

  5. 在步骤 2 中添加的代码中,选择 https://localhost:14735/NorthwindCustomers.svc 并使用刚刚复制的 URL 替换它。

  6. 按 F5 运行该应用程序。即会显示客户信息。

现在,您有了一个可以使用的应用程序,该应用程序将显示 NorthwindCustomers 服务中的客户的列表。如果希望通过该服务公开其他数据,则可以修改实体数据模型以包括 Northwind 数据库中的其他表。

在下一个可选步骤中,将学习如何筛选服务返回的数据。

添加筛选功能

在此步骤中,将自定义应用程序以根据客户的城市筛选数据。

添加根据城市进行筛选的功能

  1. 在**“解决方案资源管理器”**中,双击“Form1.vb”或“Form1.cs”以显示 Windows 窗体设计器。

  2. 将一个 TextBox 控件和一个 Button 控件从**“工具箱”**中拖到该窗体。

  3. 双击 Button 控件,然后在 Button1_Click 事件处理程序中添加以下代码:

           Dim proxy As New ServiceReference1.northwindModel.northwindEntities _
    (New Uri("https://localhost:53161/NorthwindCustomers.svc"))
           Dim city As String = TextBox1.Text
    
           If city <> "" Then
               Me.CustomersBindingSource.DataSource = From c In _
            proxy.Customers Where c.City = city
           End If
    
            ServiceReference1.northwindModel.northwindEntities proxy = new
     ServiceReference1.northwindModel.northwindEntities(new
     Uri("https://localhost:53397/NorthwindCustomers.svc/"));
        string city = textBox1.Text;
    
    if (city != "")
    {
        this.customersBindingSource.DataSource = from c in
     proxy.Customers where c.City == city select c;   
    
  4. 在以上代码中,使用 Form1_Load 事件处理程序中的 URL 替换 https://localhost:14735/NorthwindCustomers.svc。

  5. 按 F5 运行该应用程序。

  6. 在文本框中,键入 London,然后单击相应的按钮。将仅显示来自 London 的客户。

请参见

任务

如何:添加、更新或移除 WCF 数据服务引用