Share via


实体框架提供程序(WCF 数据服务)

与 WCF 数据服务 类似,ADO.NET 实体框架也基于实体数据模型(一种实体关系模型)。 实体框架将针对其实体数据模型实现(称为“概念模型”)的操作转换为针对数据源的等效操作。 这使实体框架成为基于关系数据的数据服务的理想提供程序,任何具有支持实体框架的数据提供程序的数据库都可用于 WCF 数据服务。 有关当前支持实体框架的数据源列表,请参见实体框架的第三方提供程序(可能为英文网页)。

在概念模型中,实体容器是服务的根。 必须先在实体框架中定义一个概念模型,数据服务才能公开数据。 实体框架提供了可根据概念模型自动生成对象层的工具。 对象图层包括实体类型和容器类,后者继承自 ObjectContext 类。 容器类通常也具有实体集属性,其返回指定类型实体的 IQueryable<T> 集合。 当您使用实体框架提供程序时,您只需提供此容器类作为 DataService<T> 的类型,您的数据服务从中派生,如在下面的 Northwind 数据服务示例中所示。

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

有关详细信息,请参阅如何:使用 ADO.NET 实体框架数据源创建数据服务(WCF 数据服务)

实体框架的 Code First 功能是在实体框架 4.1 中引入的。 当您使用实体框架 4.1 的 Code First 特征定义你的数据模型时,定义上下文类,其派生自 DbContext类而不是自 ObjectContext 类。 DbContext 实例也可用作从中派生您的数据服务的 DataService<T> 的类型。

WCF 数据服务支持开放式并发模型,使您能够为实体定义并发标记。 这样一个包含一个或多个实体属性的并发标记由数据服务用来确定,正在请求、更新或删除的数据中是否发生了更改。 如果从请求的 eTag 中获取的标记值与实体的当前值不相同,则数据服务将引发异常。 若要指示某个属性为并发标记的一部分,必须在实体框架提供程序所定义的数据模型中应用 ConcurrencyMode="Fixed" 特性。 并发标记不能包含键属性或导航属性。有关详细信息,请参阅更新数据服务(WCF 数据服务)

要了解有关实体框架的更多信息,请参见Entity Framework Overview

请参阅

概念

数据服务提供程序 (WCF Data Services)

反射提供程序(WCF 数据服务)

Entity Data Model