Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Удаление DataRow

Для удаления объекта DataRowиз объекта DataTableиспользуется два метода: метод Remove объекта DataRowCollectionи метод Deleteобъекта DataRow. МетодRemoveудаляет объектDataRowиз коллекцииDataRowCollection, тогда как методDeleteтолько помечает строку для удаления. Фактическое удаление происходит, когда в приложении вызывается методAcceptChanges. Использование методаDeleteпозволяет программно проверять, какие строки помечены для удаления, перед их фактическим удалением. Когда строка отмечена для удаления, ее свойствоRowStateимеет значениеDeleted.

При использовании DataSetилиDataTableв сочетании сDataAdapterи реляционным источником данных для удаления строки используйте методDeleteобъектаDataRow. МетодDeleteпомечает строку какDeletedв наборе вDataSetили таблицеDataTable, но не удаляет ее. Вместо этого, когда объектDataAdapterобнаруживает строку, помеченную какDeleted, он выполняет свой методDeleteCommand, чтобы удалить строку в источнике данных. Затем строку можно окончательно удалить с помощью методаAcceptChanges. При использовании методаRemoveдля удаления строки она полностью удаляется из таблицы, однако объектDataAdapterне удаляет строку в источнике данных.

Метод RemoveобъектаDataRowCollectionполучает объектDataRowв качестве аргумента и удаляет его из коллекции, как показано в следующем примере.

Язык C#

workTable.Rows.Remove(workRow);

В отличие от этого, в следующем примере показано, как вызывать метод DeleteобъектаDataRow, чтобы изменить состояние строкиRowStateв значениеDeleted.

Язык C#

workRow.Delete();

Если строка помечена для удаления и вызывается метод AcceptChangesобъектаDataTable, то строка удаляется из таблицыDataTable. Напротив, если вызвать методRejectChanges, то состояниеRowStateстроки возвращается к тому значению, которое оно имело до того, как строка была помечена какDeleted.

Примечание.

Если состояние RowStateобъектаDataRowимеет значениеAdded, означающее, что она недавно была добавлена в таблицу, и затем она помечается какDeleted, то строка удаляется из таблицы.

Отключение ограничений при заполнении набора данных (Практическое руководство)

Если набор данных содержит ограничения (такие как ограничение по внешнему ключу), это позволяет вызывать исключения в зависимости от порядка операций, выполняемых над набором данных. Например, загрузка дочерних записей перед загрузкой связанных родительских записей может нарушить ограничение и вызвать исключение. При загрузке дочерней записи ограничение проверяется для связанной родительской записи и вызывает ошибку. Если нет механизма, разрешающего временное отключение ограничения, ошибка будет возникать каждый раз при попытке загрузить запись в дочернюю таблицу. Другим способом приостановить все ограничения в наборе данных является использование свойств BeginEditиEndEdit.

Примечание.

События проверок (например, ColumnChanging,RowChangingи т. д.) не будут вызываться при отключенных ограничениях.

Чтобы приостановить ограничения на обновления программно

  • В следующем примере показано, как временно отключить проверку ограничений в наборе данных:

Язык C#

dataSet1.EnforceConstraints = false;

// Perform some operations on the dataset

dataSet1.EnforceConstraints = true;