创建 Northwind 数据服务(WCF Data Services 快速入门)

在此任务中,您将创建 Northwind 示例数据服务的本地版本,该示例数据服务使用 WCF 数据服务 来公开基于 Northwind 示例数据库的开放式数据协议 (OData) 源。此版本通过使用 OData 来支持 Northwind 数据库中的数据更新。 此任务涉及以下几个基本步骤:

  1. 创建一个 ASP.NET Web 应用程序。

  2. 使用实体数据模型工具定义数据模型。

  3. 向 Web 应用程序添加数据服务。

  4. 启用对数据服务的访问。

备注

在完成此任务时创建的 ASP.NET 应用程序将在 Visual Studio 提供的 ASP.NET Development Server 上运行。ASP.NET Development Server 仅支持来自本地计算机的访问。为了便于在开发的过程中测试数据服务和解决问题,可考虑通过使用 Internet Information Services (IIS) 运行承载数据服务的应用程序。有关更多信息,请参见如何:开发在 IIS 上运行的 WCF 数据服务

创建 ASP.NET Web 应用程序

  1. 在 Visual Studio 中的**“文件”菜单上,选择“新建”,然后选择“项目”**。

  2. 在**“新建项目”对话框中的“Visual Basic”或“Visual C#”下,选择“Web”模板,然后选择“ASP.NET Web 应用程序”**。

    备注

    如果使用的是 Visual Studio Web Developer,则必须创建新的网站,而不是创建新的 Web 应用程序。

  3. 键入 NorthwindService 作为项目的名称。

  4. 单击**“确定”**。

  5. (可选)为 Web 应用程序指定一个特定的端口号。 注意:在快速入门的其余部分使用端口号 12345。

    1. 在**“解决方案资源管理器”中,右击刚刚创建的 ASP.NET 项目的名称,然后单击“属性”**。

    2. 选择**“Web”选项卡,并将“特定端口”**文本框的值设置为 12345。

定义数据模型

  1. 在**“解决方案资源管理器”中,右击 ASP.NET 项目的名称,然后单击“添加新项”**。

  2. 在**“添加新项”对话框中,单击“数据”模板,然后选择“ADO.NET 实体数据模型”**。

  3. 键入 Northwind.edmx 作为数据模型的名称。

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

  5. 通过执行下列步骤之一,将数据模型连接到数据库,然后单击**“下一步”**:

    • 如果尚未配置数据库连接,请单击**“新建连接”**并创建一个新连接。 有关更多信息,请参见如何:创建到 SQL Server 数据库的连接(可能为英文网页)。 此 SQL Server 实例必须附加了 Northwind 示例数据库。

      - 或 -

    • 如果已配置一个连接到 Northwind 数据库的数据库连接,请从连接列表中选择该连接。

  6. 在向导的最后一页上,选中数据库中所有表对应的复选框,并清除视图和存储过程对应的复选框。

  7. 单击**“完成”**关闭向导。

    备注

    此生成的数据模型将在实体类型上公开外键属性。使用 Visual Studio 2008 创建的数据模型不包括这些外键属性。因此,在尝试访问使用 Visual Studio 2008 创建的 Northwind 数据服务之前,必须更新已创建的所有客户端应用程序的客户端数据服务类,然后才能访问这一版本的 Northwind 数据服务。

创建数据服务

  1. 在**“解决方案资源管理器”中,右击 ASP.NET 项目的名称,然后单击“添加新项”**。

  2. 在**“添加新项”对话框中,选择“WCF 数据服务”**。

  3. 键入 Northwind 作为服务的名称。

    Visual Studio 将为新服务创建 XML 标记和代码文件。 默认情况下,代码编辑器窗口将打开。 在**“解决方案资源管理器”**中,该服务的名称为 Northwind 并带有扩展名 .svc.cs 或 .svc.vb。

  4. 在数据服务的代码中,用数据模型的实体容器的类型(在此示例中为 NorthwindEntities)替换定义数据服务的类定义中的注释 /* TODO: put your data source class name here */。 该类定义应如下所示:

    Public Class Northwind
        Inherits DataService(Of NorthwindEntities)
    
    public class Northwind : DataService<NorthwindEntities>
    

启用对数据服务资源的访问

  • 在数据服务的代码中,用下列代码替换 InitializeService 函数中的占位符代码:

    ' Grant only the rights needed to support the client application.
    config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead _
         Or EntitySetRights.WriteMerge _
         Or EntitySetRights.WriteReplace)
    config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead _
        Or EntitySetRights.AllWrite)
    config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead)
    
    // Grant only the rights needed to support the client application.
    config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead
         | EntitySetRights.WriteMerge
         | EntitySetRights.WriteReplace);
    config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead
        | EntitySetRights.AllWrite);
    config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead);
    

    这使得授权客户端能够对指定实体集的资源进行读写访问。

    备注

    任何可以访问该 ASP.NET 应用程序的客户端也能够访问由数据服务公开的资源。在生产数据服务中,为防止对资源进行未经授权的访问,还应保护应用程序本身的安全。有关更多信息,请参见WCF 数据服务的安全

后续步骤

您已成功基于 Northwind 示例数据库创建 OData 服务的本地可写版本。 您还为对 ASP.NET Web 应用程序拥有权限的客户端启用了对源的访问。 接下来,您将创建另一个客户端应用程序,该应用程序将此 Northwind 数据绑定到 Windows 控件,并向此新的可写 OData 服务发送更新:

将 OData 源绑定到客户端应用程序中的控件

请参阅

其他资源

ADO.NET Entity Data Model Tools