TableAdapter не обновляет личность

Я использую TableAdapter для обновления базы данных следующим образом:

var changes = anpDatabase.AnpCollection.GetChanges();
anpCollectionTableAdapter.Update((AnpDatabase.AnpCollectionDataTable)changes);
anpDatabase.AnpCollection.Merge(changes);
anpDatabase.AnpCollection.AcceptChanges();

Однако этого недостаточно, чтобы обновить основной столбец идентификатора... Я попытался изменить команду Insert адаптера на следующее:

INSERT INTO AnpCollection
                  (ParentCollectionId, StartDate, EndDate, Completed, IsPartial, Partitioned, IsAutomaticallyGenerated)
VALUES     (@ParentCollectionId,@StartDate,@EndDate,@Completed,@IsPartial,@Partitioned,@IsAutomaticallyGenerated);
SELECT CollectionId, ParentCollectionId, StartDate, EndDate, Completed, IsPartial, Partitioned, IsAutomaticallyGenerated FROM AnpCollection WHERE (CollectionId = SCOPE_IDENTITY())

Однако, если я это сделаю, вместо обновления столбца появится новая строка с правильным значением идентификатора... Это не то, что я хочу... Может ли кто-нибудь мне помочь? Заранее спасибо!


person Danilo Carvalho    schedule 11.12.2013    source источник


Ответы (1)


Оставляя оператор INSERT с SELECT в конце, кажется, что правильный код здесь:

anpCollectionTableAdapter.Update(anpDatabase.AnpCollection);

вместо:

var changes = anpDatabase.AnpCollection.GetChanges();
anpCollectionTableAdapter.Update((AnpDatabase.AnpCollectionDataTable)changes);
anpDatabase.AnpCollection.Merge(changes);
anpDatabase.AnpCollection.AcceptChanges();
person Mike Perrenoud    schedule 11.12.2013
comment
Вот и все! Спасибо!! - person Danilo Carvalho; 11.12.2013