我处于以下情况:
我必须修复设计非常糟糕应用程序中的问题。在代码中,之前的开发人员从数据库获取信息并将其放入DataTable
中。然后,他在此数据表的字段上设置主键
。
但是,PK列是varchar类型,我有以下错误:
These columns don't currently have unique values.
这是因为在数据中,我有:
123b
123B
数据表中的这些值似乎是相同的,但它们并不完全相同。
是否有任何快速而肮脏的解决方法可以避免此问题,例如 CaseSensitive = False
PS:我已经看到this question ,和 this 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# 答案被接受!
感谢您的帮助
最佳答案
在分配 PrimaryKey 属性之前将 DataTable 对象上的 CaseSensitive 属性设置为 true 将允许您使用将 123b 和 123B 这两个值视为唯一的 PrimaryKey。我遇到了同样的问题并回答了这个here
关于.net - DataTable 主键上区分大小写的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26732190/