Сбросить первичный ключ - PullRequest
       19

Сбросить первичный ключ

2 голосов
/ 18 апреля 2009

Я пытался найти ответ, чтобы сделать это в Интернете, но, очевидно, это не может быть сделано (я имею в виду на уровне приложения, а не базы данных). Мне необходимо полностью очистить мой набор данных и одновременно сбросить первичный ключ. Есть идеи?

В качестве альтернативы, один из способов, который я могу использовать, - это повторная инициализация набора данных, но это также не представляется возможным, так как набор данных используется несколькими классами в приложении (я создаю общий набор данных в Program.cs).

Спасибо

Фарук

Обновление:

хорошо, я попробовал это:

MyDataSet sharedDS = new MyDataSet ();

. , ,

CleanDS ()

{

    MyDataSet referenceDS = new MyDataSet(); 
    sharedDS.Table1.Reset(); 
    sharedDS.Merge(referenceDS); 

} ​​

Моя первоначальная проблема решена, но теперь я получаю исключение System.ArgumentException для Column1, которое не принадлежит к Table1, где я могу видеть столбцы в средстве просмотра DataSet, а также видеть заполненные строки. Также обратите внимание, что я могу вручную заново создать весь DataSet, и я все еще получаю ту же ошибку. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 26 апреля 2009

Я попробовал это с autoincrementseed и autoincrementstep, и это наконец работает. вот для справки других:

sharedDS.Clear();
sharedDS.Table1.Columns[0].AutoIncrementStep = -1;
sharedDS.Table1.Columns[0].AutoIncrementSeed = -1;
sharedDS.Table1.Columns[0].AutoIncrementStep = 1;
sharedDS.Table1.Columns[0].AutoIncrementSeed = 1;

см. Рассуждения в этой теме: http://www.eggheadcafe.com/community/aspnet/10/25407/autoincrementseed.aspx

и: http://msdn.microsoft.com/en-us/library/system.data.datacolumn.autoincrementseed(VS.85).aspx

спасибо всем за помощь!

0 голосов
/ 18 апреля 2009

Метод DataSet.Clear () делает то, что вы хотите?

Редактировать

Поскольку вы говорите, что хотите сбросить первичный ключ, вы должны говорить о таблицах данных, содержащихся в наборе данных. Вы пытались вызвать DataSet.Tables ["MyTable"]. Reset (), который должен вернуть таблицу в исходное состояние, а не весь DataSet?

Редактировать 2

Если это автоинкрементный столбец, пытались ли вы сбросить свойство AutoIncrementSeed DataColumn в 0?

...