65.9K
CodeProject 正在变化。 阅读更多。
Home

使用语言集成查询 (LINQ) 访问 ASP.NET WebPages 中的数据 - 第 2 部分

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.94/5 (7投票s)

2008年2月2日

CPOL

5分钟阅读

viewsIcon

50597

使用 ASP.NET 的 LinqDataSource 控件访问各种类型的数据

引言

本文的第二部分,也是最后一部分,是对文章使用语言集成查询 (LINQ) 访问 ASP.NET WebPages 中的数据 - 第 1 部分的续写。本部分将介绍如何使用对象关系设计器创建实体类来表示 SQL Server 数据库和表,并使用 LinqDataSource 控件在网页中显示数据。

LinqDataSource 控件

使用声明式标记,您可以创建一个 LinqDataSource 控件,该控件可以连接到 SQL 数据库表中的数据,并将其配置为处理数据更新、插入和删除,而无需编写执行这些任务的 SQL 命令。LinqDataSource 类还提供了一个事件模型,允许您处理自定义场景。要使用 LinqDataSource 控件查询数据库,必须创建实体对象来表示数据库及其表。您可以使用对象关系设计器或 SqlMetal.exe 工具来生成这些对象。

ContextTypeName 属性必须设置为表示数据库的对象,而 TableName 属性必须设置为表示数据库表的对象。

对象关系设计器

对象关系设计器 (O/R Designer) 提供了一个可视设计界面,用于根据数据库中的对象创建 LINQ to SQL 实体类和关联(关系)。换句话说,O/R Designer 用于在应用程序中创建与数据库中的对象映射的对象模型。O/R Designer 还提供了将存储过程和函数映射到 DataContext 方法的功能,用于返回数据和填充实体类。O/R Designer 还提供了设计实体类之间继承关系的功能。O/R Designer 目前仅支持 SQL Server 2000 及更高版本以及 SQL Server Express 数据库。

O/R Designer 的设计界面上有两个不同的区域:左侧的实体窗格和右侧的方法窗格。实体窗格是显示文件中定义的实体类的主要设计界面。方法窗格是显示映射到存储过程和函数的 DataContext 方法的設計界面。您可以隐藏方法窗格。使用方法窗格超出了本文的范围。

代码生成工具 (SqlMetal.Exe)

SqlMetal 命令行工具用于为 .NET Framework 的 LINQ to SQL 组件生成代码和映射。通过应用下面列出的选项,您可以指示 SqlMetal 执行多种不同的操作,包括:

从数据库生成源代码和映射属性或映射文件。
从数据库生成中间 DBML 文件用于自定义。
从 DBML 文件生成源代码和映射属性或映射文件。
默认情况下,该文件位于 [驱动器]:\program files\microsoft sdks\windows\v6.0A\bin

>sqlmetal [options] [<input file>]

示例 1:要在 Visual Studio 命令提示符窗口中生成包含提取的 SQL 元数据的 .dbml 文件,请发出以下命令。

>sqlmetal /server:myserver /database:northwind /dbml:mymeta.dbml

示例 2:要从包含 SQL Server Express 的 .mdf 文件生成包含提取的 SQL 元数据的 .dbml 文件,请发出以下命令。

>sqlmetal /dbml:mymeta.dbml mydbfile.mdf

演练 2

使用 O/R Designer 和 LinqDataSource 连接 Sql Server Express 数据库,并在表上执行查询以在 ASP.NET 网页中显示数据

将一个新网页(Default2.aspx)添加到您刚刚创建的网站项目中,以测试演练 1 的示例。

在网站菜单中,选择“添加新项”命令,然后在对话框中从可用模板列表中选择“Linq to SQL 类”。它会在网站的 App_Code 文件夹中创建一个名为 DataClasses.dbml 的新实体类文件。

在将新的 LINQ to SQL 文件添加到项目后,空的设计界面代表一个已准备好进行配置的 DataContext DataContext 的名称与您为 .dbml 文件提供的名称相对应。在本演练中,因为您将 LINQ to SQL 文件命名为 DataClasses.dbml,所以 DataContext 的名称为 DataClassesDataContext。您可以通过单击设计器上的空白区域并检查“属性”窗口来验证这一点。

下一步是通过将表从“服务器资源管理器/数据库资源管理器”拖到 O/R Designer 上来创建映射到数据库表的 LINQ to SQL 类。结果是一个映射到数据库中表的 LINQ to SQL 实体类。

linqdatapic5.jpg

在“服务器资源管理器/数据库资源管理器”中,找到本文使用的 sales.dbf 示例数据库的 SQL Server 版本中的表。

将“产品”节点从“服务器资源管理器/数据库资源管理器”拖到 O/R Designer 界面上。

将创建一个名为 Product 的实体类来表示 Product 表中的单个产品。它具有与 Product 表中的列对应的属性。

从工具箱中的“数据”选项卡将 LinqDataSource 控件(ID=LinqDataSource1)拖到 Default2.aspx 页面中,并按照以下方式在“配置数据源”向导中进行配置,以访问您刚刚在项目中创建的数据源和查询。

  1. 选择“DataClassDataContext”作为上下文对象。

linqdatapic6.jpg

  1. 在“数据选择”中选择“products”作为表,并在“选择”列表中勾选所有出现的字段。
  2. 单击“完成”按钮以完成 LinqDataSource 控件的配置。

从工具箱中的“数据”选项卡将 GridView 控件(ID=GridView1)拖到页面中,并将“数据源”属性设置为 LinqDataSource1

就是这样。现在运行网页,查看如下所示的输出。

linqdatapic7.jpg

结论

这篇分为两部分的文章基本介绍了如何使用 ASP.NET 2008 新版本提供的 LinqDataSource 控件连接到两种不同的数据源:对象数据集合和 SQL Server Express 数据库表。它还详细介绍了如何定义对象和实体类以及执行查询来显示数据。在接下来的文章中,我将探索更多关于使用 LINQ 与其他数据源的内容。

© . All rights reserved.