2013-12-11 3 views
1

Я использую TableAdapter для обновления базы данных, как это:TableAdapter не обновляя идентичности

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

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

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()) 

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

ответ

1

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

anpCollectionTableAdapter.Update(anpDatabase.AnpCollection); 

вместо:

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

Вот оно! Спасибо!! –

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