При загрузке из базы данных я использую одну процедуру сохранения, которая загружает DataItem
и любые Data
, связанные с ней. Это возвращается в одном DataSet с двумя таблицами, первая таблица имеет одну строку и описывает DataItem
, а каждая строка в другой таблице описывает связанный Data
.
Этот набор данных затем используется для заполнения моих объектов.
Моя проблема возникает, когда мне нужно сохранить объекты обратно в базу данных. В настоящее время я сохраняю DataItem
, а затем перебираю все свои Data
и выполняю сохранение для каждого из них. Я знаю, это совершенно ужасный способ сделать это. Он медленный и не транзакционный.
Итак, в идеале я бы хотел преобразовать мои объекты обратно в мой DataSet, а затем сохранить все это обратно в базу данных за одну эффективную транзакционную операцию. Какой код мне нужен на стороне C #, чтобы сделать эту транзакцию и позволить мне вернуть DataSet. Я предполагаю, что это будет связано с использованием TableAdapter
. Но учитывая, что у меня есть две таблицы, как это будет работать? Что я использую на стороне SQL - Могу ли я использовать процедуры хранения? (Я бы хотел избежать использования SQL в моем проекте на C #) Нужно ли мне написать что-то, что будет обрабатывать циклический перебор данных для сохранения каждой записи?
Какой лучший способ сделать все это? Это сформирует основу проекта, над которым я работаю, поэтому я хочу, чтобы он был настолько быстрым и эффективным, насколько это возможно!
(.NET 4.0 и SQL 2005)