Я испытываю странное поведение при попытке изменить некоторые объекты DataTable. При втором вызове подпрограммы я получаю следующую ошибку при копировании исходного DataTable в рабочий набор:
System.Data.ConstraintException было
поймано сообщение = "столбец" рк "
вынужден быть уникальным. Значение
'path0.tag0' уже присутствует. "
Для контекста я определяю первичный ключ таблицы данных в этом фрагменте кода.
itemsTable.Columns.Add("pk")
For Each itemrow As DataRow In itemsTable.Rows
itemrow.Item("pk") = itemrow.Item("path").ToString + itemrow.Item("tag")
Next
Dim keyColumns() As DataColumn = {itemsTable.Columns("pk")}
itemsTable.PrimaryKey = keyColumns
Затем я обновляю таблицу, используя код в этой подпрограмме
Private Sub DataChange(ByVal ClientHandles As Array, ByVal CurrentValues As Array, ByVal QualityValueArray() As String) _
Handles myOpcData.DataChange
Dim updateTable As New DataTable
Try
updateTable = itemsTable.Copy <-----Exception happens here
For index As Integer = 1 To ClientHandles.Length
updateTable.Rows(ClientHandles(index)).Item("value") = CurrentValues(index)
Next
itemsTable.Merge(updateTable)
Catch ex As Exception
Debug.Print(ex.ToString)
End Try
End Sub
Любые идеи о том, как исправить мой код или предложение, если есть лучший способ обновления моей таблицы?