У меня есть пакетный процесс, который считывает данные из нескольких таблиц в набор данных на основе общего ключа. Затем я строю второй набор данных из целевых данных, запрашивающих тот же ключ.
На данный момент у меня есть два набора данных, которые являются структурно идентичными (с точки зрения расположения таблицы / столбца). Затем у меня есть процесс, который добавляет любую строку, которая существует в источнике, к набору данных назначения. Кроме того, процесс попытается обновить определенные столбцы на основе общего ключа.
Проблема возникает, когда вызывается команда DataAdapter.UPDATE с существующими строками, которые необходимо обновить.
Ошибка:
System.InvalidOperationException не было обработано
Сообщение = "Таблица, указанная в операторе SELECT, не содержит уникальный ключ или столбец идентификатора, или инструкция SELECT не включает в себя все ключевые столбцы."
Поскольку у меня нет способа контролировать, какой PK находится в целевой БД, есть ли способ сообщить адаптеру, какой ключ для этого конкретного обновления? У меня есть «пользовательский» набор первичных ключей для каждой таблицы данных в наборе данных.
Это пакетный процесс, не связанный с пользователем, и его требования к производительности довольно низки. (чтобы объяснить использование наборов данных и т. д.)
Есть мысли?