2014-11-04 2 views
0

Я нахожусь в следующей ситуации:DataTable случае чувствительные символы на первичный ключ

Я должен исправить проблему в очень плохо разработанной применения. В коде предыдущий разработчик получает информацию от БД и помещает его в DataTable. Затем он устанавливает Primary Key на поле этого datatable.

Однако колонна PK является VARCHAR типа, и у меня есть следующее сообщение об ошибке:

Эти столбцы в настоящее время не имеют уникальные значения.

Это происходит потому, что в данных, у меня есть:

123b
123B

Кажется, эти значения одинаковы для DataTable, в то время как они не являются точно такими же. Есть ли быстрый и грязный обходной путь, чтобы избежать этой проблемы, как CaseSensitive = False

PS: Я уже вижу this question и this one, но я хотел бы избежать, чтобы воссоздать все приложение ...
Я знаю, что я должен создайте столбец идентификатора и установите его как PK, но есть много проблем с обеспечением, и я сделаю это, только если не найду быстрое решение.

FYI, то DataTable сконструирован так:

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# принят!

Спасибо за вашу помощь

ответ

0

Установки свойства CaseSensitive на DataTable объекта к истинному, прежде чем назначая PrimaryKey свойства позволит использовать PrimaryKey, учитывающие два значения, 123b и 123b, чтобы быть уникальными. У меня была такая же проблема и ответил на это here

Смежные вопросы