注意
数据集和相关类是 2000 年代初的旧 .NET Framework 技术,使应用程序能够在应用程序与数据库断开连接时处理内存中的数据。 这些方法对于使用户能够修改数据并持续更改回数据库的应用程序特别有用。 虽然数据集已被证明是一项非常成功的技术,但我们建议新的 .NET 应用程序使用 Entity Framework Core。 实体框架提供了一种更自然的方式来将表格数据作为对象模型,并且具有更简单的编程接口。
在此演练中,使用数据集设计器创建数据集。 本文将指导你完成创建新项目并向其添加新的“数据集”项的过程。 你将了解如何在无需使用向导的情况下根据数据库中的表创建表。
先决条件
要完成本教程,需要在 Visual Studio 中安装“.NET 桌面开发”工作负载和(对于“数据源”窗口)“数据存储和处理”工作负载。 若要安装这些程序,请打开 Visual Studio 安装程序,然后在要修改的 Visual Studio 版本旁选择修改(或更多>修改)。 请参阅修改 Visual Studio。
本演练使用 SQL Server Express LocalDB 和 Northwind 示例数据库。
如果尚未安装 SQL Server Express LocalDB,可以从 SQL Server Express 下载页或通过 Visual Studio 安装程序安装。 在 Visual Studio 安装程序中,SQL Server Express LocalDB 可以作为数据存储和处理工作负载的一部分或作为单个组件安装。
按照以下步骤安装 Northwind 示例数据库:
在 Visual Studio 中,打开“SQL Server 对象资源管理器”窗口。 (在 Visual Studio 安装程序中 SQL Server 对象资源管理器作为数据存储和处理工作负载的一部分安装。)展开 SQL Server 节点。 右键单击 LocalDB 实例并选择“新建查询”。
此时将打开查询编辑器窗口。
将 Northwind Transact-SQL 脚本复制到剪贴板。 此 T-SQL 脚本从头开始创建 Northwind 数据库并用数据填充它。
将 T-SQL 脚本粘贴到查询编辑器中,然后选择“执行”按钮。
不久后,查询完成执行并且 Northwind 数据库创建完成。
创建新的 Windows 窗体应用程序项目
在 Visual Studio 中,创建新的 Windows 窗体应用 (.NET Framework) 项目并将其命名为 DatasetDesignerWalkthrough。
Visual Studio 随即将该项目添加到“解决方案资源管理器”,并在设计器中显示一个新窗体。
向应用程序添加新的数据集
在项目菜单上,选择添加新项。
此时会显示添加新项对话框。
在左侧窗格中,选择“数据”,然后在中间窗格中选择“数据集” 。
将数据集命名为 NorthwindDataset,然后选择“添加” 。
Visual Studio 会将名为 NorthwindDataset.xsd 的文件添加到项目中,并在“数据集设计器”中打开它 。
在服务器资源管理器中创建数据连接
在“视图”菜单上,单击“服务器资源管理器”。
在“服务器资源管理器”中,单击“连接到数据库”按钮 。
创建与 Northwind 示例数据库的连接。
在数据集中创建表
本部分介绍如何向数据集添加表。
创建 Customers 表
展开在“服务器资源管理器”中创建的数据连接,然后展开“表”节点 。
将“客户”表从“服务器资源管理器”拖动到“数据集设计器”上 。
将“客户”数据表和“CustomersTableAdapter”添加到数据集 。
创建 Orders 表
将“订单”表从“服务器资源管理器”拖动到“数据集设计器”上 。
将“订单”数据表、OrdersTableAdapter、“客户”与“订单”表之间的数据关系添加到数据集 。
创建“订单详细信息”表
将“订单详细信息”表从“服务器资源管理器”拖动到“数据集设计器”上 。
将“订单详细信息”数据表、OrderDetailsTableAdapter、“订单”与“订单详细信息”表之间的数据关系添加到数据集 。
保存数据集
刚刚创建的数据集出现在“数据源”窗口中。 如果未看到数据源窗口,请检查是否安装了先决条件中提及的数据存储和处理工作负载。
现在可以执行以下任何任务:
保存数据集。
在“数据源”窗口中选择项,并将这些项拖动到窗体上。 有关详细信息,请参阅在 Visual Studio 中将 Windows 窗体控件绑定到数据。
向 TableAdapter 添加更多查询。
将验证逻辑添加到该数据集中数据表的 ColumnChanging 或 RowChanging 事件中。 有关详细信息,请参阅验证数据集中的数据。