创建数据服务

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

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

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

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

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

Dd728275.note(zh-cn,VS.100).gif注意:
在完成此任务时创建的 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 应用程序”**。

    Dd728275.note(zh-cn,VS.100).gif注意:
    如果使用的是 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. 单击**“完成”**关闭向导。

    Dd728275.note(zh-cn,VS.100).gif注意:
    此生成的数据模型将在实体类型上公开外键属性。使用 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>
    

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

  1. 在数据服务的代码中,用下列代码替换 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);
    

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

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

后续步骤

您已经成功地创建了一个公开基于 Northwind 示例数据库的 OData 源的新数据服务,并且已经为具有 ASP.NET Web 应用程序的相应权限的客户端启用对该源的访问权。接下来,将从 Visual Studio 启动数据服务,并通过 Web 浏览器提交 HTTP GET 请求来访问 OData 源:

从 Web 浏览器访问服务

另请参见

其他资源

ADO.NET Entity Data Model Tools