当前位置:  开发笔记 > 编程语言 > 正文

数据表不知道它的主键

如何解决《数据表不知道它的主键》经验,为你挑选了1个好方法。

我正在尝试通过查询每列自动增量属性来查询数据表以建立主键[标识列].然而它总是假的(对于Idenity/PK的列).

查询表主键集合显示数据表不认为它具有PK.

  Dim dc As DataColumn() = dt.PrimaryKey
  Debug.WriteLine(dc.Count)  'Result is 0

数据表正在填充.......

Using cn As SqlConnection = MyApp.GetConnection
  Using cmd As New SqlCommand(strSQL, cn)
    Using da As New SqlDataAdapter(cmd)
      Dim ds As New DataSet
      Try
        da.Fill(ds)

        Return ds

      Catch ex As Exception
        MyAppClass.LogWarning(ex, EventLogEntryType.Error)
        Throw
      End Try
    End Using 
  End Using 
End Using

有问题的表的主键是:([myTableId] [int] IDENTITY(1,1)NOT NULL).和它的pk:CONSTRAINT [PK_myTablesPK] PRIMARY KEY CLUSTERED([myTableId] ASC)

这里有人有同样的问题(可能比我写的更清楚):http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/c6abdeef-0cb0-42f5-a5f1-10dc4d81df4a/

我假设它很简单,我想念,有人关心开导我吗?



1> GordonB..:

使用fillschema修复了我的问题;

da.FillSchema(ds, SchemaType.Mapped, table.tableName)
da.Fill(ds, table.tableName)

默认情况下,DataAdapter对象针对只读方案进行了优化.Fill方法仅检索填充DataSet对象所需的模式量.若要获取更新或验证DataSet对象所需的其他模式,请对DataAdapater填充的DataSet对象使用以下方法之一:

使用DataAdapter 的FillSchema方法.

对DataAdapter的MissingSchemaAction属性使用AddWithKey枚举.

本文介绍如何在使用DataAdapter填充可更新的DataSet对象时如何在这两种方法之间进行选择.

参考:http://support.microsoft.com/kb/310128

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有