У меня есть отношение «многие ко многим» в 3 таблицах: ProgramUserGroup и Feature - это две основные таблицы, а связь между ними LinkFeatureWithProgramUserGroup где я имею отношение внешнего ключа к двум родительским таблицам.
У меня есть набор данных со вставками: я хочу добавить новую строку в ProgramUserGroup и связанную (существующую) функцию в таблицу LinkFeatureWithProgramUserGroup.
При вставке новых строк я устанавливаю идентификатор по умолчанию -1:
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <DataSetUserGroup xmlns="http://tempuri.org/DataSetUserGroup.xsd">
<ProgramUserGroup diffgr:id="ProgramUserGroup1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<id>-1</id>
<Name>99999999999</Name>
<Active>false</Active>
</ProgramUserGroup>
<LinkFeatureWithProgramUserGroup diffgr:id="LinkFeatureWithProgramUserGroup1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<id>-1</id>
<Feature_id>7</Feature_id>
<ProgramUserGroup_id>-1</ProgramUserGroup_id>
</LinkFeatureWithProgramUserGroup> </DataSetUserGroup> </diffgr:diffgram>
при обновлении таблиц выдается ошибка:
"Оператор INSERT конфликтовал с ограничением FOREIGN KEY" FK-LinkFeatu-Progr-7DCDAAA2 ". Конфликт произошел в базе данных" x ", таблица" dbo.ProgramUserGroup ", столбец" id "."
Код для обновления следующий:
DataSetUserGroupTableAdapters.LinkFeatureWithProgramUserGroupTableAdapter lfa = new LinkFeatureWithProgramUserGroupTableAdapter();
DataSetUserGroupTableAdapters.ProgramUserGroupTableAdapter pug = new ProgramUserGroupTableAdapter();
pug.Update(dsUserGroup.ProgramUserGroup);
lfa.Update(dsUserGroup.LinkFeatureWithProgramUserGroup);
если я проверю идентификатор новой строки таблицы ProgramUserGroup, он будет обновлен с -1 до @@ identity (например, 1099), так что все в порядке - он вставляет новую строку.
Но в таблице LinkFeatureWithProgramUserGroup соответствующее значение ProgramUserGroup.ID по-прежнему равно -1, оно все равно не обновлялось.
Как я могу также принудительно обновить ключи таблицы ссылок?
Я пробовал
pug.Update(dsUserGroup.ProgramUserGroup);
dsUserGroup.Merge(dsUserGroup.ProgramUserGroup);
lfa.Update(dsUserGroup.LinkFeatureWithProgramUserGroup);
Но не решил проблему: (
Спасибо
б.