Добавление записей в типизированный DataSet
К примеру, имеется типизированный MyDataSet, представленный в дизайнере:

Соответственно, в БД на SQL-Server также имеется три таблицы: Items, Books, Authors.
Для добавления новой книги в БД необходимо правильно разнести её данные по трем взаимосвязанным таблицам.
Так, как таблица Books имеет внешние ключи, то вставлять запись в неё мы будем в последнюю очередь.
Для начала, добавим необходимую информацию в таблицу Items:
MyDataSet myDataSet = new MyDataSet();
MyDataSet.ItemsRow itemRow =
myDataSet.Items.AddItemsRow(
Guid.NewGuid(), book.Name,
book.Publisher, book.PublishedDate);
Теперь проделаем то же самое с таблицей Authors:
MyDataSet.AuthorsRow authorRow =
myDataSet.Authors.AddAuthorsRow(
Guid.NewGuid(), book.AuthorName);
Заметьте, что для добавление новых записей мы использовали метод AddItemsRow(), который возвращает строго типизированный объект – типизированную строку конкретной таблицы, каждую из которых мы поместили в переменную. Теперь эти переменные (itemRow, authorRow) мы используем для добавления на их основе новой записи в таблицу Books:
myDataSet.Books.AddBooksRow(itemRow,
«4534-987-6757”, authorRow);
Как видим, таблица Book имеет два внешних ключа для полей Book.ItemId и Book.AuthorId и только единственное
собственно определяемое поле Book.ISBN. В итоге, метод AddBooksRow для объекта
myDataSet.Books принимает в качестве параметров объект типа
MyDataSet.ItemsRow, объект типа MyDataSet.AuthorsRow
и, собственно, значение для поля ISBN.
Таким образом, значения из внешних ключей вычисляются автоматически, что избавлет нас от личного контроля целостности данных.
Редактирование существующих записей в типизированном DataSet
Для этого используйте метод FindBy(), который возвращает найденную запись типа DataRow.
Сохранив этот объект в некоторой переменной, мы сможем получать доступ к столбцам, которые требуется изменить.
Находим и редактируем строку в таблице Items:
MyDataSet.ItemsRow itemRow =
myDataSet.Items.FindByID(someItemId);
itemRow.Name = “Три товарища”;
itemRow.PublishedDate = 1978;
itemRow.Punlisher = «Москва»;
Создаем запись в таблице Authors (или получаем ссылку на уже существующую):
MyDataSet.AuthorsRow authorRow =
myDataSet.Authors.AddAuthorsRow(
Guid.NewGuid(), “Эрих Мария Ремарк”);
Находим и редактируем строку в таблице Books
MyDataSet.BooksRow bookRow =
myDataSet.Books.FindByItemID(someItemId);
bookRow.ISBN = «35636-45656-24353425”;
bookRow.AuthorID = authorRow.ID;
Как видите, мы можем получить необходимую запись из таблицы зная идентификатор этой записи.
Сейчас уже мы не вносили изменения в таблицу Authors поскольку изменяя имя автора для текущей книги достаточно указать новое значение в поле Books.AuthorId:
bookRow.AuthorID = authorRow.ID;
Если нам заранее известен индекс редактируемой записи, то можем воспользоваться следующей записью:
bookDataSet.Books[3].ISBN = «35636-45656-24353425”;
Тут же можем получить соответствующие записи из родительских таблиц для данной через типизированные свойства:
MyDataSet.ItemsRow itemRow = bookRow.ItemsRow;
MyDataSet.AuthorsRow authorRow = bookRow.AuthorsRow;