AddWithKey 相关技术

 

DataAdapter 的 Fill 方法仅使用数据源中的表列和表行来填充 DataSet;虽然约束通常由数据源来设置,但在默认情况下,Fill 方法不会将此架构信息添加到 DataSet 中。若要使用数据源中的现有主键约束信息填充 DataSet,则可以调用 DataAdapter 的 FillSchema 方法,或者在调用 Fill 之前将 DataAdapter 的 MissingSchemaAction 属性设置为 AddWithKey。这将确保 DataSet 中的主键约束反映数据源中的主键约束。外键约束信息不包含在内,将需要显式创建,如将约束添加到表所示。

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

注意 如果数据源中的某列被标识为自动递增列,则 MissingSchemaAction 为 AddWithKey 的 FillSchema 方法或 Fill 方法将创建一个 AutoIncrement 属性设置为 true 的 DataColumn。不过,您将需要手动设置 AutoIncrementStep 和 AutoIncrementSeed 值。有关自动递增列的更多信息,请参阅创建 AutoIncrement 列。
当使用 FillSchema 或将 MissingSchemaAction 设置为 AddWithKey 时,将需要在数据源中进行额外的处理来确定主键列信息。这一额外的处理可能会降低性能。如果主键信息在设计时已知,为了实现最佳性能,建议显式指定一个或多个主键列。有关为表显式设置主键信息的信息,请参阅为表定义主键。

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

[Visual Basic]
Dim custDS As DataSet = New DataSet()

custDA.FillSchema(custDS, SchemaType.Source, "Customers")
custDA.Fill(custDS, "Customers")

[C#]
DataSet custDS = new DataSet();

custDA.FillSchema(custDS, SchemaType.Source, "Customers");
custDA.Fill(custDS, "Customers");

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

[Visual Basic]
Dim custDS As DataSet = New DataSet()

custDA.MissingSchemaAction = MissingSchemaAction.AddWithKey
custDA.Fill(custDS, "Customers")

[C#]
DataSet custDS = new DataSet();

custDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
custDA.Fill(custDS, "Customers");

多个结果集

如果 DataAdapter 遇到从 SelectCommand 中返回的多个结果集,它将在 DataSet 中创建多个表。将向这些表提供递增的默认名称 TableN,以表示 Table0 的“Table”为第一个表名。如果以参数形式向 FillSchema 方法传递表名称,则将向这些表提供递增的默认名称 TableNameN,这些表名称以表示 TableName0 的“TableName”为起始。

注意 如果对返回多个结果集的命令调用 OleDbDataAdapter 对象的 FillSchema 方法,则将只返回第一个结果集中的架构信息。当使用 OleDbDataAdapter 为多个结果集返回架构信息时,建议在调用 Fill 方法时将 MissingSchemaAction 指定为 AddWithKey 并获取架构信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值