生成类型化 ResultSet
更新:2007 年 11 月
当 XSD 架构文件上的 CustomTool 属性设置为 MSResultSetGenerator 时,会生成类型化 ResultSet 数据源对象,而不是通常的类型化 DataSet 数据源对象。ResultSet 是快速数据库游标,它支持用户界面数据绑定、后滚和前滚数据以及更新数据库中的数据。作为一种始终保持连接的模型,ResultSet 保持与数据库的活动连接。
类型化 ResultSet 功能
生成的类型化 ResultSet 对象提供对数据库表的类型安全访问,这与类型化 DataSets 非常类似。这样,生成的代码确保在应用程序和数据库之间传递的数据在编译时与数据库架构正确匹配。类型化 ResultSet 生成的代码扩展 SQL Server Compact 3.5 ResultSet 基类,以提供特定于目标数据库表的属性和方法。
以下段落总结了为类型化 ResultSet 生成的代码的特性。
构造函数 生成的类型化 ResultSet 包含两个构造函数。默认构造函数可用于设计时和基本运行时方案。Visual Studio 的设计时要求默认构造函数连接到位于本地开发计算机上的数据库。因此,生成的代码包含一个指向本地 SQL Server Compact 3.5 数据库文件的连接字符串。默认构造函数在运行时切换到与执行应用程序同处一个目录下的本地 SQL Server Compact 3.5 数据库文件。这是基本运行时方案。
连接字符串 当运行时方案较为复杂时,例如当 SQL Server Compact 3.5 数据库文件未处于执行目录中,或者连接字符串别有不同(例如密码不同)时,可使用重载的构造函数。重载构造函数采用两个参数:一个自定义连接字符串和一个自定义 ResultSetOptions 标志。
连接属性 连接属性是类型化 ResultSet 用来访问数据库数据的活动 SqlCeConnection 对象。连接属性是公共的,允许管理类型化 ResultSet 的连接状态。例如,有些事务可能要求关闭连接。
对表列的类型安全访问 生成的代码为数据表中的每一列创建一个属性访问器。属性类型是通过将基础数据库类型映射为 .NET Framework 类型来确定的。例如,nvarchar 映射为 .NET Framework 字符串。因为生成的属性同时支持 Get 和 Set 访问器,所以可以使用 .NET Framework 字符串而不是基础数据库的 nvarchar 来拉取和推送数据。每列还有一个 IsxxxDBNull 和 SetxxxDBNull 方法(其中,xxx 为列名),以实现从数据库中获取 DBNull 以及将 DBNull 设置到数据库中。
AddxxxRecord 方法(其中 xxx 为表名) 此方法允许向数据库表中添加新行。AddxxxRecord 方法对数据表中的每一列都有一个参数,自动增加的列除外,这些列的值由数据库引擎分配。每个参数又再次声明为 .NET Framework 类型,这样就能够方便地用于应用程序,并抽象出基础数据库类型。在调用此方法后不必调用更新。调用此方法之后,新行将提交到数据库。
DeletexxxRecord 方法(其中 xxx 是表名) 此方法从数据库中删除当前行。与数据集不同,此转换不进行缓存,而且调用之后,即从数据库中删除行。调用此方法后,不必再调用更新。
Bind 方法 Bind 方法采用一个参数,即 BindingSource,它被数据绑定到窗体上的一个或多个用户界面控件。然后,此方法将 BindingSource 绑定到类型化 ResultSet 的实例,完成数据绑定链,并使控件能够直接显示数据库中的数据。
说明: 设计时方案需要一个硬编码的指向 SQL Server Compact 3.5 数据库的连接字符串。某些时候,例如开发人员之间共享项目时,此连接字符串可能过期。因此,“数据源”窗口和/或 Windows 窗体设计器可能无法打开该项目。您可以重新生成类型化 ResultSet 代码以纠正这种情况。在“解决方案资源管理器”中,右击 XSD 架构文件,再单击“运行 CustomTool”。