演练:使用基架创建新的动态数据网站

更新:2007 年 11 月

本演练演示如何创建使用 ASP.NET 动态数据的基本 Web 应用程序。动态数据使您可使用很少的代码甚至根本无需额外的代码即可创建数据驱动的网站。动态数据的一个重要功能是基架机制。在动态数据网站中启用基架机制后,ASP.NET 会对数据模型进行分析,并动态地为每个表生成网页。这些自动生成的网页为每个表提供了显示、插入、删除及编辑功能。

在本演练中,您将生成一个应用程序,该应用程序显示 AdventureWorks 示例数据库中的数据页。

观看视频,其中演示了此功能。

先决条件

若要完成本演练,您需要:

  • Microsoft Visual Studio 2008 Service Pack 1 或 Visual Web Developer 2008 速成版 Service Pack 1。

  • AdventureWorks 或 AdventureWorksLT 示例数据库。有关如何下载和安装 SQL Server 示例数据库的信息,请参见 CodePlex 站点上的 Microsoft SQL Server Product Samples: Database(Microsoft SQL Server 产品示例:数据库)。请确保针对所运行的 SQL Server 版本(Microsoft SQL Server 2005 或 Microsoft SQL Server 2008)安装正确版本的示例数据库。

创建动态数据网站

可以使用网站模板在 Visual Studio 中创建动态数据网站。

创建动态数据网站

  1. 启动 Visual Studio 或 Visual Web Developer。

  2. 在**“文件”菜单中单击“新建网站”。或者,如果没有此选项,请单击“新建”,然后单击“网站”**。

    显示**“新建网站”**对话框。

  3. 在**“Visual Studio 已安装的模板”下,选择“动态数据网站”(以使用 LINQ to SQL)或“动态数据实体网站”**(以使用 ADO.NET Entity Framework)。

  4. 在第一个**“位置”框中,选择“文件系统”**,在第二个框中,输入用于保存网站页面的文件夹的名称。

    例如,输入文件夹名称“C:\WebSites\DynamicData”。

  5. 在**“语言”**列表中,单击您想使用的编程语言。

  6. 单击**“确定”**。

  7. Visual Studio 将为网站创建文件夹和结构。

向网站中添加数据

下一步是向项目中添加数据库。为此,使用 Visual Studio 提供的工具创建表示数据库实体的类,然后注册供动态数据使用的数据上下文。可以选择以下方法基于所选定的模板创建数据库模型:

  • 如果创建网站时使用的是**“动态数据网站”**模板,则必须使用 LINQ to SQL 创建数据库模型。

  • 如果创建网站时使用的是**“动态数据实体网站”**模板,则必须使用 Entity Framework 创建数据库模型。

有关选择数据模型的更多信息,请参见 ASP.NET 动态数据指南

向项目中添加数据库文件

  1. 如果网站上没有 App_Data 文件夹,则在**“解决方案资源管理器”中右击项目,单击“添加 ASP.NET 文件夹”,然后单击“App_Data”**。

  2. 在**“解决方案资源管理器”中,右击 App_Data 文件夹,然后单击“添加现有项”**。

    显示**“添加现有项”**对话框。

  3. 输入 AdventureWorks 数据库文件 (AdventureWorks_Data.mdf) 的安装位置。

    默认情况下,.mdf 文件的安装路径为 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf。

    Cc488469.alert_note(zh-cn,VS.90).gif说明:

    此过程将创建项目中的数据库文件的副本。如果创建数据库副本不太实际,可以使用其他方法(例如直接附加数据库文件)连接到数据库。不过,本演练不介绍此操作过程。

下一步是创建数据模型。根据您希望使用 LINQ to SQL 还是 ADO.NET Entity Framework 来创建数据模型,该过程稍有不同。

使用 LINQ to SQL 创建数据模型

  1. 如果网站上还没有 App_Code 文件夹,请在**“解决方案资源管理器”中右击相应的项目,再单击“添加 ASP.NET 文件夹”,然后单击“App_Code”**。

  2. 右击 App_Code 文件夹,然后单击**“添加新项”**。

  3. 在**“Visual Studio 已安装的模板”下,单击“LINQ to SQL 类”**。

  4. 在**“名称”**框中输入数据库模型的名称。

    例如,输入名称“AdventureWorks.dbml”。

  5. 单击**“添加”**。

    此时将显示“对象关系设计器”。

  6. 在 O/R 设计器中,单击**“服务器资源管理器”链接(在 Visual Web Developer 中是“数据库资源管理器”**)。

  7. 在**“服务器资源管理器”“数据库资源管理器”)中,在“数据连接”下展开数据库文件节点,然后展开“表”**节点。

  8. 将所有表拖到 O/R 设计器中。

    每个表都表示为根据相应数据库表命名的一个实体。

  9. 保存“AdventureWorks.dbml”文件。

  10. 在**“解决方案资源管理器”**中,打开位于 .dbml 文件节点下的 AdventureWorks.designer.cs 或 AdventureWorks.designer.vb 文件。

    注意 .dbml 文件包含表示数据库的 AdventureWorksDataContext 类。它还包含表示数据库表的实体类,例如,Product 和 Employee 类。AdventureWorksDataContext 类的无参数构造函数从 Web.config 文件中读取连接字符串。

  11. 打开 Web.config 文件。

    请注意,connectionStrings 元素包含 AdventureWorks 数据库的连接字符串。

  12. 关闭类文件和 Web.config 文件。

为 Entity Framework 创建数据模型

  1. 如果网站上还没有 App_Code 文件夹,请在**“解决方案资源管理器”中右击相应的项目,再单击“添加 ASP.NET 文件夹”,然后单击“App_Code”**。

  2. 右击 App_Code 文件夹,然后单击**“添加新项”**。

  3. 在**“Visual Studio 已安装的模板”下,单击“ADO.NET 实体数据模型”**。

  4. 在**“名称”**框中输入数据库模型的名称。

    例如,输入名称“AdventureWorks.edmx”。

  5. 单击**“添加”**。

    将显示**“实体数据模型向导”**窗口。

  6. 单击**“从数据库生成”**。

    这指定要从数据库生成模型。

  7. 在**“应用程序连接数据库应使用哪个数据连接?”**下面的列表中,选择“AdventureWorks_Data.mdf”。

  8. 确保选中了**“将 Web.Config 中的实体连接设置另存为”**复选框。可以保留默认的连接字符串名称。

  9. 单击**“下一步”**。

    该向导将显示一页,您可以从该页中指定要包括在模型中的数据库对象。

  10. 选择**“表”**节点以选择数据库中的所有表。可以保留默认模型命名空间。

  11. 单击**“完成”**。

    将显示 ADO.NET 实体数据模型设计器。关闭该设计器。

  12. 在**“解决方案资源管理器”**中,打开位于 .edmx 文件节点下的 AdventureWorks.designer.cs 或 AdventureWorks.designer.vb 文件。

    注意,.edmx 文件包含表示数据库的 AdventureWorksDataContext 类。它还包含表示数据库表的实体类,例如,Product 和 Employee 类。

  13. 打开 Web.config 文件。

    请注意,connectionStrings 元素包含 AdventureWorks 数据库的连接字符串。

  14. 关闭类文件和 Web.config 文件。

下一步是注册供动态数据使用的数据模型。

注册数据上下文

  1. 打开 Global.asax 文件。

  2. 如果使用的是 LINQ to SQL,请在 RegisterRoutes 方法中添加以下行:

    model.RegisterContext(GetType(AdventureWorksDataContext), _
        New ContextConfiguration() With {.ScaffoldAllTables = True})
    
    model.RegisterContext(typeof(AdventureWorksDataContext), 
        new ContextConfiguration() { ScaffoldAllTables = true });
    

    这将注册供动态数据使用的 LINQ to SQL 数据上下文,并启用数据模型的自动基架。

    Cc488469.alert_caution(zh-cn,VS.90).gif警告:

    启用基架可能会带来安全风险,因为这样将公开数据模型中的所有表,使其可用于显示和编辑操作。有关更多信息,请参见 ASP.NET 动态数据基架和网页模板概述

  3. 如果使用的是 Entity Framework,请在 RegisterRoutes 方法中添加以下行:

    model.RegisterContext(GetType(AdventureWorksLT_DataModel.AdventureWorksLT_DataEntities), _
        New ContextConfiguration() With {.ScaffoldAllTables = True})
    
    model.RegisterContext(typeof(AdventureWorksLT_DataModel.AdventureWorksLT_DataEntities), 
        new ContextConfiguration() { ScaffoldAllTables = true });
    

    这将注册供动态数据使用的 Entity Framework 数据上下文,并启用数据模型的自动基架。

    Cc488469.alert_caution(zh-cn,VS.90).gif警告:

    启用基架可能会带来安全风险,因为这样将公开数据模型中的所有表,使其可用于显示和编辑操作。有关更多信息,请参见 ASP.NET 动态数据基架和网页模板概述

  4. 保存并关闭 Global.asax 文件。

测试动态数据网站

现在可以测试刚刚创建的动态数据网站。

测试网站

  1. 在**“解决方案资源管理器”中,右击 Default.aspx 页,然后单击“在浏览器中查看”**。

    该页显示一个包含添加到数据模型中的表的列表。

  2. 单击其中的一个表。例如,单击 Products 表。

    将显示一个包含所选表中的数据的页。注意,对于包含外键字段的表,提供了指向所引用表的详细信息页的链接。如果该表是一对多关系中的父表,则提供指向子表的列表页的链接。

  3. 单击**“删除”**按钮从表中删除一条记录。

  4. 单击页编号浏览记录。

  5. 单击**“编辑”**按钮修改表中的记录。

  6. 更改记录的值,然后单击**“更新”,或者单击“取消”**取消编辑操作。

  7. 在页的底部,单击**“插入新项”**按钮创建一条新记录。

    将显示包含数据输入字段的页。

  8. 提供新的记录信息,然后单击**“插入”,或单击“取消”**取消插入操作。

  9. 完成后,关闭浏览器。

后续步骤

本演练演示如何在不编写任何代码的情况下创建一个基本的动态数据网站。于此,您可开始了解动态数据功能以及扩展动态数据的默认行为。

请参见

概念

ASP.NET 动态数据概述

其他资源

对象关系设计器(O/R 设计器)

LINQ to SQL

ADO.NET Entity Framework