演练:在 Visual Studio 中创建和访问 WCF 数据服务
本演练演示如何创建一个承载于 ASP.NET Web 应用程序中的简单 WCF 数据服务,然后从 Windows 窗体应用程序中访问它。
在此演练中,将:
创建 Web 应用程序以承载 WCF 数据服务。
创建一个表示 Northwind 数据库中 Customers 表的 实体数据模型。
创建 WCF 数据服务。
创建一个客户端应用程序,并添加对 WCF 数据服务的引用。
启用对该服务的数据绑定并生成用户界面。
可以选择向应用程序添加筛选功能。
系统必备
您需要以下组件来完成本演练:
Northwind 示例数据库。
如果没有在开发计算机中安装此数据库,可以从 Microsoft 下载中心进行下载。有关说明,请参见Downloading Sample Databases (LINQ to SQL)。
创建服务
若要创建 WCF 数据服务,您将添加一个 Web 项目,创建一个实体数据模型,然后通过此模型创建服务。
首先,将添加一个 Web 项目以承载服务。
![]() |
---|
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置。 |
创建 Web 项目
在 Visual Studio 的**“文件”菜单上单击“新建项目”**。
在 新建项目 对话框中,展开 Visual Basic 或 Visual C# 节点并单击 Web,然后选择 ASP.NET Web 窗体应用程序。
在**“名称”字段中,键入“NorthwindWeb”,然后单击“确定”**创建项目。
在此步骤中,您将创建一个表示 Northwind 数据库中 Customers 表的 实体数据模型。
创建实体数据模型
在**“项目”菜单上,单击“添加新项”**。
在 添加新项 对话框中,选择" 数据,然后选择 ADO.NET 实体数据模型。
在**“名称”字段中,键入 NorthwindModel,然后单击“添加”**。
将显示实体数据模型向导。
在实体数据模型向导中,选择**“从数据库生成”,然后单击“下一步”**。
在**“选择您的数据连接”**页上执行下列步骤之一:
如果下拉列表中包含与 Northwind 示例数据库的数据连接,请单击该连接。
- 或 -
单击**“新建连接”**来配置新的数据连接。有关更多信息,请参见How to: Create Connections to SQL Server Databases。
如果数据库需要密码,请选择该选项以包括敏感数据,再单击**“下一步”**。
说明
如果出现一个对话框,请单击“是”将该文件保存到您的项目中。
在**“选择数据库对象”页中,展开“表”节点,选中“Customers”旁边的复选框,然后单击“完成”**。
随即显示实体模型关系图,NorthwindModel.edmx 文件也将添加到项目中。
在此步骤中,您将创建并测试数据服务。
创建数据服务
在**“项目”菜单上,单击“添加新项”**。
在 添加新项 对话框中,选择的 Web 然后选择 WCF 数据服务。
在**“名称”字段中,键入 NorthwindCustomers,然后单击“添加”**。
NorthwindCustomers.svc 文件将显示在**“代码编辑器”**中。
在**“代码编辑器”**中,定位到第一个 TODO: 注释并使用以下内容替换该代码:
Inherits DataService(Of northwindEntities)
public class NorthwindCustomers : DataService<northwindEntities>
说明
根据所使用的 Northwind 数据库的版本,您可能需要将“NORTHWIND”更改为“NORTHWND”。还可以使用 IntelliSense 来发现正确的名称。
使用下面的代码替换 InitializeService 事件处理程序中的注释:
config.SetEntitySetAccessRule("*", EntitySetRights.All)
config.SetEntitySetAccessRule("*", EntitySetRights.All);
按“Ctrl+F5”运行此服务。将打开一个浏览窗口,并显示该服务的 XML 架构。
在**“地址”**栏中,在 NorthwindCustomers.svc 的 URL 末尾处键入 Customers,然后按 Enter。
Customers 表中的数据将以 XML 表示形式显示。
说明
某些情况下,Internet Explorer 会将数据错误解释为 RSS 源。必须确保禁用显示 RSS 源的选项。有关更多信息,请参见服务引用疑难解答。
关闭浏览器窗口。
在接下来的步骤中,将创建一个 Windows 窗体客户端应用程序以使用该服务。
创建客户端应用程序
若要创建客户端应用程序,您将另外添加一个项目,添加对该项目的服务引用,配置数据源,并创建一个用户界面以显示服务中的数据。
在第一个步骤中,您将 Windows 窗体项目添加到解决方案中,并将其设置为启动项目。
创建客户端应用程序
在 Visual Studio**“文件”菜单上单击“添加”,然后单击“新建项目”**。
在**“新建项目”对话框中,展开“Visual Basic”或“Visual C#”节点,接着单击“Windows”,然后选择“Windows 窗体应用程序”**。
在**“名称”字段中,键入 NorthwindClient,然后单击“确定”**打开项目。
在**“解决方案资源管理器”**中,选择 NorthwindClient 项目。
在**“项目”菜单上单击“设为启动项目”**。
在此步骤中,将添加对 Web 项目中的 WCF 数据服务的服务引用。
添加服务引用
在**“项目”菜单上单击“添加服务引用”**。
在**“添加服务引用”对话框中,单击“发现”**。
NorthwindCustomers 服务的 URL 将显示在**“地址”**字段中。
单击**“确定”**以添加此服务引用。
在此步骤中,将配置数据源以启用对服务的数据绑定。
启用对服务的数据绑定
在**“数据”菜单上,单击“显示数据源”**。
在**“数据源”窗口中,单击“添加新数据源”**。
在**“数据源配置向导”的“选择数据源类型”页上,单击“对象”,然后单击“下一步”**。
在**“选择希望绑定到的对象”页上,展开“NorthwindClient”节点,然后展开“NorthwindClient.ServiceReference1”**节点。
选择**“Customers”,然后单击“完成”**。
在此步骤中,您将创建用于显示服务中的数据的用户界面。
创建用户界面
将**“Customers”节点从“数据源”**窗口拖动到窗体中。
一个 DataGridView 控件、一个 BindingSource 组件以及一个 BindingNavigator 组件将添加到窗体中。
双击窗体以打开代码编辑器,然后向 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 来发现正确的名称。
在**“解决方案资源管理器”中,右击 NorthwindCustomers.svc 文件,然后单击“在浏览器中查看”**。Internet Explorer 随即打开,并显示该服务的 XML 架构。
从 Internet Explorer 地址栏中复制 URL。
在步骤 2 中添加的代码中,选择 https://localhost:14735/NorthwindCustomers.svc 并使用刚刚复制的 URL 替换它。
按 F5 运行该应用程序。即会显示客户信息。
现在,您有了一个可以使用的应用程序,该应用程序将显示 NorthwindCustomers 服务中的客户的列表。如果希望通过该服务公开其他数据,则可以修改实体数据模型以包括 Northwind 数据库中的其他表。
在下一个可选步骤中,将学习如何筛选服务返回的数据。
添加筛选功能
在此步骤中,将自定义应用程序以根据客户的城市筛选数据。
添加根据城市进行筛选的功能
在**“解决方案资源管理器”**中,双击“Form1.vb”或“Form1.cs”以显示 Windows 窗体设计器。
双击 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;
在以上代码中,使用 Form1_Load 事件处理程序中的 URL 替换 https://localhost:14735/NorthwindCustomers.svc。
按 F5 运行该应用程序。
在文本框中,键入 London,然后单击相应的按钮。将仅显示来自 London 的客户。