【问题标题】:DataTable case sensitive characters on Primary Key主键上的 DataTable 区分大小写字符
【发布时间】:2014-11-04 09:55:55
【问题描述】:

我的情况如下:

我必须修补设计非常糟糕的应用程序中的问题。在代码中,之前的开发者从 DB 中获取信息并将其放入 DataTable 中。然后,他在这个数据表的一个字段上设置了Primary Key

但是,PK列是varchar类型,出现如下错误:

这些列目前没有唯一值。

这是因为在数据中,我有:

123b
123B

数据表的这些值似乎相同,但并不完全相同。 是否有任何快速而肮脏的解决方法来避免这个问题,比如CaseSensitive = False

PS:我已经看到 this questionthis one,但我想避免重新创建整个应用程序...
我知道我应该创建一个标识列并将其设置为 PK,但是有很多附带问题,只有在找不到快速解决方案时才会这样做。

仅供参考,数据表是这样构造的:

Dim dataColumn As New DataColumn(ucStatus.CheckColumnKey, GetType(Boolean))
dataColumn.DefaultValue = False
dataColumn.AllowDBNull = False
sourceInt.Columns.Add(dataColumn)
sourceInt.Columns(dataColumn.ColumnName).SetOrdinal(0)

sourceInt.PrimaryKey = New DataColumn() {sourceInt.Columns(MyColumn)}

最后一行有问题,MyColumn 列包含有问题的数据。
代码在 VB.NET 中,但接受 C# 答案!

感谢您的帮助

【问题讨论】:

    标签: .net datatable unique primary-key uppercase


    【解决方案1】:

    在分配 PrimaryKey 属性之前将 DataTable 对象上的 CaseSensitive 属性设置为 true 将允许您使用一个 PrimaryKey,该 PrimaryKey 认为这两个值 123b 和 123B 是唯一的。我有同样的问题并回答了这个here

    【讨论】:

      猜你喜欢
      • 2013-03-19
      • 2012-12-09
      • 2018-04-19
      • 1970-01-01
      • 2022-11-22
      • 2014-09-02
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多