ASP.NET 动态数据模型概述
更新: 2008 年 7 月
数据模型表示数据库中的信息以及数据库中项之间的相互关系。ASP.NET 动态数据使用将数据表示为 CLR 类型的数据模型。它支持 LINQ-to-SQL 和 ADO.NET Entity Framework 数据模型。
通过数据模型,可以控制数据字段的外观和行为,并且只需少量代码或者不需代码即可执行自动验证。此外,还可以自定义数据模型,以影响数据字段的验证方式以及用于显示和编辑数据字段的 UI 的呈现方式。
通过了解和使用数据模型,您可以执行以下操作:
通过在数据层创建数据相关逻辑,而不是在表示层嵌入数据相关逻辑,使代码的可重用性更强。
在数据层自定义数据字段验证。
通过将元数据应用于数据字段来自定义数据字段的外观和行为。
本主题包含以下部分:
背景
显示和修改数据字段
验证数据字段
其他信息
背景
动态数据支持 LINQ to SQL 以及 NET Framework 中包括的 Entity Framework 数据模型。这些模型包含 CLR 类型,动态数据使用这些类型来查询数据库,并执行创建、读取、更新和删除 (CRUD) 操作。利用这些模型,可以方便地将数据验证和业务逻辑规则集成到数据模型中。
在 Visual Studio 2008 中创建新项目时,可以选择**“LINQ to SQL 类”或“ADO.NET 实体数据模型”**模板。此选择决定项目使用的模型类型,即是使用 LINQ-to-SQL 还是 Entity Framework 模型。动态数据基架在同一项目中仅支持一种数据模型类型。
在运行时,动态数据会自动提取数据模型的有关信息,如数据字段属性。通过此信息,动态数据可以推断如何创建用于显示和编辑数据的 UI。为了呈现该 UI,它将使用字段模板。例如,动态数据使用下面的信息来呈现 UI:
表之间的关联信息,用于显示外键列并在表之间导航。
数据类型信息,用于对数据字段添加验证。例如,可以使用 null 列信息来确定是否需要数据字段,可以使用长度信息来限制用户的文本输入的最大长度。
有关更多信息,请参见如何:在数据模型中自定义数据字段的外观和行为。
显示和修改数据字段
动态数据使用数据模型元数据来自动确定使用哪些字段模板来呈现用于显示和修改数据字段的 UI。字段模板是用户控件,动态数据提供这些字段模板,以便基于数据字段的内部数据类型来显示和修改数据字段。为了呈现数据类型,动态数据会在数据模型中执行搜索,查找应用了 UIHintAttribute 属性的类。
如果该属性存在,动态数据会指定使用哪个字段模板来显示和修改特定数据字段类型。如果该属性不存在,动态数据会搜索其名称与数据字段类型相匹配的字段模板。例如,为了显示整数值,动态数据会搜索名为 Integer.ascx 的字段模板。有关更多信息,请参见 ASP.NET 动态数据字段模板概述。
动态数据允许您自定义和扩展要呈现的用于显示和编辑数据字段的 UI。您可以应用以下可能的自定义项:
将自定义元数据添加到数据字段。可以使用属性将元数据分配到数据字段,从而自定义如何呈现用于显示和编辑该数据字段的 UI。例如,可以使用 UIHintAttribute 属性将自定义字段模板与数据字段相关联。有关更多信息,请参见如何:在数据模型中自定义数据字段的外观和行为。
将非内部类型信息添加到数据字段类型。可以使用属性将类型分配到不是从数据源直接派生的数据字段。例如,可以使用 DataTypeAttribute 属性将附加的非内部类型与数据字段相关联。有关更多信息,请参见如何:在数据模型中为非内部数据类型自定义数据字段的外观和行为。
验证数据字段
动态数据支持基于数据模型进行数据字段验证,其中包含以下类型的验证:
必填字段验证。如果数据字段不能为 null,动态数据会强制为该字段提供一个值。
长度验证。如果数据库字段为字符串,动态数据会强制该字段的最大长度。
类型验证。动态数据会强制用户的输入值与数据字段的内部数据类型匹配。
动态数据允许您按如下所示的方式自定义和扩展数据字段验证:
使用属性。希望将附加验证应用于动态数据已经提供的内容且默认 System.ComponentModel.DataAnnotations 属性足以满足您的要求时,应该使用此方法。
使用分部类方法。通过重写用于处理对数据字段所做更改的分部方法,可以自定义验证并添加自己的业务逻辑。当希望将常用业务逻辑添加到不能由属性处理的数据模型时,应该使用此方法。
有关更多信息,请参见如何:在数据模型中自定义数据字段验证。
其他信息
有关动态数据的更多信息,请参见下列主题:
了解 URL 路由。有关更多信息,请参见 ASP.NET 路由。
了解如何在 Web 应用程序中使用 O/R 设计器来创建表示 SQL Server 数据库的数据类。有关更多信息,请参见对象关系设计器(O/R 设计器)。
了解如何在 Web 应用程序中使用 ADO.NET 实体数据模型设计器来创建表示数据库的数据类。有关更多信息,请参见 ADO.NET 实体数据模型设计器(实体设计器)。
了解 LINQ-to-SQL 对象关系映射。有关更多信息,请参见 LINQ to SQL。
了解 ADO.NET Entity Framework。有关更多信息,请参见 ADO.NET Entity Framework。
了解分部类和方法。有关更多信息,请参见分部类和方法(C# 编程指南)。
返回页首
请参见
任务
概念
参考
System.ComponentModel.DataAnnotations
修订记录
日期 |
修订历史记录 |
原因 |
---|---|---|
2008 年 7 月 |
新增了主题。 |
SP1 功能更改。 |