根据建议,您使用的是所谓的"typed DataSet"。那将是从现有数据库生成的,而不是相反的。
使用标准的ADO.NET,可以在应用程序中的数据库表和数据表之间创建一个数据适配器作为代理。您需要提供该数据适配器的SQL代码和参数定义,并且DataTable中的所有数据都将作为对象引用进行访问,因为它需要支持任何类型的数据。
类型化数据集建立在该标准ADO.NET基础上。 IDE工具将生成包含继承或包装标准类型的类型的代码,并添加特定于您的数据库的新成员,这就是通常从现有数据库中生成它的原因。您可以在DataSet设计器中进行更改,但这通常是对自动生成的类型或添加项的修改,而不是从头开始进行构建。
关于类型,标准的DataSet具有一个Tables属性,该属性是一个DataTableCollection,您可以通过提供名称作为字符串来从中获取DataTable。基于原始数据库表中的列,类型化的数据集具有每个数据表的专用属性,并且每个数据表都是专用类型。标准DataTable具有Rows属性,该属性是DataRowCollection。您可以通过对该集合建立索引来获取DataRow,然后可以使用索引或列名从字段中获取数据作为对象引用。可以直接为类型化的DataTable建立索引,以获取类型化的DataRow,并且该DataRow为每个已经具有正确类型的列具有专用属性。例如,不是使用标准的DataSet来执行此操作:
string fullName = (string) myDataSet.Tables("Person").Rows(0)("FullName");
you would do this with a 键入数据集:
string fullName = myDataSet.Person(0).FullName;
您将获得表和列名称的完整Intellisense,所有内容都是类型安全的,因此名称"typed DataSet".
可以使用IDE生成的表适配器,而不是使用自己构建的数据适配器。一般来说,您只需要调用Fill即可检索数据,并调用Update来保存数据。所有SQL代码和参数定义都是以包装在表适配器中的数据适配器的形式为您生成的。一个不错的功能是,您可以使用同一个表适配器来执行完整查询和过滤查询。通过调用Fill执行的默认查询有效
"SELECT *" 针对指定的表格。在数据集设计器中,可以将查询添加到表适配器,并添加过滤器或其他所需的逻辑,只要结果集具有与默认查询相同的架构即可。假设您有一个带有SupplierId列的Product表。 Fill方法将检索每个产品记录。您可以像这样添加查询:
选择 * FROM Product WHERE SupplierId = ?
并命名关联的方法FillBySupplierId和GetDataBySupplierId。然后,您可以调用FillBySupplierId并提供一个ID作为参数,并在键入的DataTable中获取过滤后的结果。
这只是一个基本的入门。如果您要搜索的话,还有更多的信息"typed DataSets".