配置 EntityDataSource 控件
更新:2007 年 11 月
EntityDataSource 控件利用 ADO.NET Entity Framework 中的对象服务组件,将实体数据模型 (EDM) 定义的绑定数据简化为 ASP.NET Web 应用程序中的控件。这使得该控件可以撰写和执行对象查询,并将控件绑定到返回的对象,这些对象是在 EDM 中定义的实体类型的实例。有关更多信息,请参见对象服务概述 (Entity Framework)。
必须配置 EntityDataSource 控件的属性,才能连接到 EDM 并返回正确的实体类型。设置 ConnectionString 和 DefaultContainerName 属性时,EntityDataSource 控件可以创建 ObjectContext 用来执行对象查询。设置 EntitySetName 和 EntityTypeFilter 属性时,要定义 EntityDataSource 控件撰写的 ObjectQuery<T> 的类型。
说明: |
---|
若要使用 EntityDataSource 控件,必须将应用程序中的引用添加到 DLL 和 类中,前者包含 EDM 模型和映射文件,后者表示 ObjectContext 和实体类型。 |
连接字符串
可以初始化 EntityDataSource 控件的 ConnectionString 属性,该控件位于存储在应用程序配置文件的 connectionStrings 元素中的一个命名的 EDM 连接字符串中。当使用实体数据模型向导创建 EDM 时,同时在应用程序配置文件中也创建了一个命名的 EDM 连接。然后可以在 EntityDataSource 设计器的**“配置数据源”**向导中查看作为选项的该连接。有关更多信息,请参见配置数据源向导(EntityDataSource 控件)。
对象上下文
在对象服务中,一个类型化的 ObjectContext 表示概念模型中的实体容器。ObjectContext 类是与 EDM 定义的数据进行交互的主要类。该数据的形式为实体类型的实例。一个类型化的 ObjectContext 封装与数据库之间的连接、描述模型的元数据以及在创建、更新和删除操作期间跟踪对象的 ObjectStateManager 对象。EntityDataSource 控件的 ContextTypeName 属性是一个字符串,指定 EntityDataSource 控件使用的类型化的 ObjectContext 的完全限定类型名。如果未指定 ContextTypeName 属性,则必须同时设置 EntityDataSource 控件的 DefaultContainerName 和 ConnectionString 属性来创建 ObjectContext。您可以从 ContextType 属性访问 EntityDataSource 控件使用的 ObjectContext。有关更多信息,请参见对象上下文生命周期管理 (EntityDataSource)。
实体类型
在 EDM 中,实体集是在概念性架构中定义的实体类型的逻辑容器。可以指定对象类型的实体集,EntityDataSource 控件可以通过 EntitySetName 访问。EntitySetName 属性的值是控件使用的默认 SELECT 语句。如果将查询指定为为 CommandText 属性提供的实体 SQL 表达式,则不需要该设置。有关更多信息,请参见 自定义命令文本 (EntityDataSource)。
如果 EntityDataSource 控件必须返回一个特定的派生类型,则还必须在 EntityTypeFilter 属性中指定该派生类型的名称。如果 EntitySetName 属性指定了一个能够生成多态结果的实体集,则需要 EntityTypeFilter 属性才能编辑数据。设置 EntityTypeFilter 属性与将 OfType<TResultType> 方法应用于 ObjectQuery<T> 具有同样的效果。如果数据绑定是只读的,则不需要 EntityTypeFilter 属性。在这种情况下,查询返回对象的属性将为实体集的默认实体类型的属性。