如何添加ADO.NET数据集约束

开发 后端
这里就添加ADO.NET数据集约束和示例显示如何使用 FillSchema 向 DataSet 添加架构信息都做出了详细的介绍,希望对大家有帮助。

学习ADO.NET时,你可能会遇到ADO.NET数据集约束问题,这里将介绍ADO.NET数据集约束问题的解决方法,在这里拿出来和大家分享一下。DataAdapter 的 Fill 方法仅使用数据源中的表列和表行来填充 DataSet;虽然约束通常由数据源来设置,但在默认情况下,Fill 方法不会将此架构信息添加到 DataSet 中。 若要使用数据源中的现有主键约束信息填充 DataSet,则可以调用 DataAdapter 的 FillSchema 方法,或者在调用 Fill 之前将 DataAdapter 的 MissingSchemaAction 属性设置为 AddWithKey。 这将确保 DataSet 中的主键约束反映数据源中的主键约束。 外键约束信息不包含在内,必须显式创建,如ADO.NET数据集约束 (ADO.NET)中所示。

#T#如果在使用数据填充 DataSet 之前向其中添加架构信息,可以确保将主键约束与 DataSet 中的 DataTable 对象包含在一起。 这样,当再次调用来填充 DataSet 时,将使用主键列信息将数据源中的新行与每个 DataTable 中的当前行相匹配,并使用数据源中的数据改写表中的当前数据。 如果没有架构信息,来自数据源的新行将追加到 DataSet 中,从而导致重复的行。

如果数据源中的某列被标识为自动递增列,则 FillSchema 方法或 MissingSchemaAction 为 AddWithKey 的 Fill 方法将创建一个 AutoIncrement 属性设置为 true 的 DataColumn。 不过,您将需要手动设置 AutoIncrementStep 和 AutoIncrementSeed 值。 有关自动递增列的更多信息,请参见创建 AutoIncrement 列 (ADO.NET)。

当使用 FillSchema 或将 MissingSchemaAction 设置为 AddWithKey 时,将需要在数据源中进行额外的处理来确定主键列信息。 这一额外的处理可能会降低性能。 如果主键信息在设计时已知,为了实现***性能,建议显式指定一个或多个主键列。 有关显式设置表的主键信息的详情,请参见定义主键 (ADO.NET)。

以下代码示例显示如何使用 FillSchema 向 DataSet 添加架构信息。

  1. Dim custDataSet As DataSet = New DataSet()  
  2. custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers")  
  3. custAdapter.Fill(custDataSet, "Customers") 


以下代码示例显示如何使用 Fill 方法的 MissingSchemaAction.AddWithKey 属性向 DataSet 添加架构信息。

  1. Dim custDataSet As DataSet = New DataSet()  
  2. custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey  
  3. custAdapter.Fill(custDataSet, "Customers") 

 

责任编辑:田树 来源: 博客
相关推荐

2009-11-04 11:02:23

ADO.NET Dat

2009-12-29 14:41:13

ADO.NET 数据集

2009-12-29 15:38:05

ADO.NET语句

2009-12-28 15:11:36

ADO.NET专家

2009-11-13 09:30:28

2009-11-12 10:06:01

ADO.NET读取数据

2009-11-11 15:09:35

ADO.NET数据集

2009-12-22 14:15:08

ADO.Net处理数据

2009-12-21 17:02:19

ADO.NET Sql

2009-11-03 16:37:10

2009-09-14 13:37:25

LINQ ADO.NE

2009-11-04 11:40:38

ADO.NET Dat

2009-12-25 14:23:35

ADO.NET设置

2010-01-04 10:48:30

ADO.NET特色

2009-11-11 13:59:15

ADO.NET与ADO

2009-12-31 14:46:29

ADO.NET Ent

2011-05-20 11:31:07

ADO.NET

2009-11-13 11:08:04

ADO.NET Row

2009-11-12 15:38:18

ADO.NET数据平台

2011-05-20 15:45:52

数据集
点赞
收藏

51CTO技术栈公众号