ASP.NET 动态数据指南

更新:2007 年 11 月

利用 ASP.NET 动态数据,您可以根据自己的需要选择适当的自定义级别。本部分包括相关指南和建议,可以帮助您执行任务。

动态数据让您能够快速创建具有全部动态功能的完整 Web 应用程序。它还让您能够轻松地将数据库集成在网站中,并选择您所需要的特定动态功能。

ASP.NET 动态数据提供一系列的自定义项,让网站从表示层到数据层都符合您的需求。

使用基架创建网站

如果需要快速创建一个数据驱动的网站,使用 ASP.NET 动态数据将让您能够轻松地创建具有全部动态功能的完整 Web 应用程序。动态数据支持 Web 基架,该基架让您能够运行基于数据模型的应用程序,而只需要很少的代码,从而能够帮助您实现目标。尽管此 Web 基架具有标准 UI,但它还是允许您针对表执行创建、读取、更新和删除 (CRUD) 操作。此外,它还提供对关系的完全支持。可以首先使用基架创建基本应用程序,随后再应用相应的自定义项。有关更多信息,请参见演练:使用基架创建新的动态数据网站

有关更多信息,请参见 ASP.NET 动态数据概述

向现有网站添加动态数据

ASP.NET 动态数据让您能够选择您所需要的特定动态功能,从而将动态数据控件行为集成在现有网站中。为此,您必须执行下列步骤:

有关更多信息,请参见演练:向现有网站中添加动态数据

使用验证属性

可以通过使用 System.ComponentModel.DataAnnotations 属性将元数据应用于数据模型中的数据字段,为动态数据提供更多信息。例如,动态数据使用此信息,自定义用于显示和编辑数据字段的 UI 的呈现方式。

使用验证属性

在应用验证属性时,必须遵循以下使用限制:

  • 该属性 ( attribute) 可以应用于属性 (property ) 或字段。

  • 该属性只能应用一次。

应用验证属性

在将任何 System.ComponentModel.DataAnnotations 属性应用于数据字段时,必须遵循下面的步骤。

  • 在 Web 应用程序的 App_Code 文件夹中,实现一个包括数据上下文分部类的类文件。此类表示的表包含该属性所要应用于的数据字段。

  • 创建另一个类,用作关联元数据类。可以将任何名称用于该类,但类名必须与您在应用于分部类的 MetadataTypeAttribute 属性中引用的名称匹配,如下所述。将此类与刚创建的类放在同一个类文件中。

  • 在关联元数据类中,创建一个公共属性或字段,其名称与您必须应用验证属性的数据字段的名称相同。

  • MetadataTypeAttribute 属性应用于分部类定义。该属性的参数为关联元数据类的名称。

生成验证错误

System.ComponentModel.DataAnnotations 属性使您能够在验证失败时创建自定义错误或使用内置错误。出于这个原因,验证属性可能带有以下命名错误参数中的任何一个参数:

  • ErrorMessage。此参数指定与验证控件关联的错误消息。可以使用此参数指定不可本地化的自定义错误消息,还可能重写默认的可本地化的消息。

  • ErrorMessageResourceName。此参数指定与验证控件关联的错误消息资源。可以使用此参数指定一个包含可本地化的错误消息的资源文件

  • ErrorMessageResourceType。此参数指定与验证控件关联的错误消息类型。可以使用此参数标识在资源文件中定义的错误消息。资源文件是使用上一个参数指定的。

在使用验证属性错误消息时,您可以有以下选择:

  • 可以使用始终本地化的默认错误消息。在这种情况下,您不必指定以上参数中的任何一个。

  • 可以提供一个不可本地化的自定义错误消息,该消息通过使用 ErrorMessage 参数重写默认消息。

  • 可以提供一个资源错误消息文件,该文件可以使用 ErrorMessageResourceName 参数进行本地化。然后使用 ErrorMessageResourceType 参数,指定包含在资源文件中的错误消息。

选择数据模型

LINQ to SQL 和 Entity Framework 具有很多共同之处,但两者也都具有一些面向不同应用场景的功能。LINQ to SQL 更倾向于针对现有 Microsoft SQL Server 架构快速开发应用程序。Entity Framework 通过与现有关系架构的松耦合灵活映射,提供对 Microsoft SQL Server 和第三方数据库的对象和存储层访问。

LINQ to SQL

LINQ to SQL 具有面向 Microsoft SQL Server 数据库的功能。它使您能够获得现有数据库架构的强类型视图。

LINQ to SQL 支持现有数据库架构与 .NET Framework 类的直接一对一映射。单个表可以映射到单个类。外键可以作为强类型关系公开。

可以通过表/视图/表值函数生成 LINQ 查询,并将结果作为强类型对象返回,还可以通过强类型方法调用返回强类型结果的存储过程。LINQ to SQL 的一个关键设计原则是它适用于大多数常见情况。因此,举例来说,如果您通过一位客户的 Orders 属性访问订单的集合,而且以前没有检索过该客户的订单,LINQ to SQL 将自动为您获取这些订单。

ADO.NET Entity Framework

ADO.NET Entity Framework 还具有面向企业应用情景的功能。在企业中,数据库通常由数据库管理员控制。架构通常可以在存储方面(性能、一致性和分区)进行优化,而不是通过公开好的应用程序模型来优化,随着时间的推移以及使用数据和使用模式的演进,该架构可能随之变化。

Entity Framework 是围绕公开面向应用程序的数据模型而设计的,这种数据模型是松耦合的,与现有数据库架构的差异可能很大。

例如,您可将单个类(或实体)映射到多个表/视图,也可将多个类映射到同一个表/视图。您可将继承层次结构映射到单个表/视图(就像在 LINQ to SQL 中那样)或多个表/视图。这种灵活的映射是以声明方式指定的,目的是在无需重新编译应用程序的条件下,适应数据库架构随着时间推移而进行的演进。

Entity Framework 包括 LINQ to Entities,它通过概念应用程序数据模型,公开很多与 LINQ to SQL 相同的功能。

有关更多信息,请参见 Introducing LINQ to Relational Data(将 LINQ 引入关系数据)。

请参见

任务

演练:向现有网站中添加动态数据

演练:向现有网站中添加动态数据

概念

ASP.NET 动态数据字段模板概述

ASP.NET 动态数据基架和网页模板概述

ASP.NET 动态数据概述

参考

分部类和方法(C# 编程指南)

其他资源

LINQ to SQL

ADO.NET Entity Framework