Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Сообщение

Temych


Мудрец

Зарегистрирован:
29 September 2002
Сообщения: 1479
Примеры кода: 5
 

RE: Связь один ко многим в одной талице ...

28 May 2003 14:14  


Имеем таблицу следующей структуры Id (bigint, PKey, autoincrement), ParentId(bigint), Nm(varchar(300)). На клиенте dataset и winforms TreeView. Проблемой является каскадное удаление групп. На стороне MS SQL 2000 данная связь не позволяет проводить каскадное удаление, тогда как в датасет это возможно. Соответственно при Update возникает exception.
Вопрос 1. Каким образом задать порядок обновления строк Адаптером, или это возможно сделать только построчным обновлением с использование рекурсии (первым удаляем строку, Id которой не засветился в ParentId)?
Вопрос 2. Кто нибуть встречал примеры решений от MSDN или производителей компонент?




тогда как в датасет это возможно. Соответственно при Update возникает exception.

Это точно?



Вопрос 1. Каким образом задать порядок обновления строк Адаптером, или это возможно сделать только построчным обновлением с использование рекурсии (первым удаляем строку, Id которой не засветился в ParentId)?

Могу только предложить такой извращённый вариант:
0. Перед всем этим извратом, который я напишу ниже, данные в датасете и базе надо синхронизировать.
1. На стороне клиента перед тем как удалить строку dataRow, клонируешь её в некую cloneDataRow.
1.2. Удаляешь строку dataRow (срабатывает каскад, удаляются все дети)
1.3. Делаешь AcceptChanges для всей таблицы1.4. Добавляешь cloneDataRow в таблицу,
1.5. Делаешь для cloneDataRow AcceptChanges.
1.6. Удаляешь cloneDataRow из таблицы (Delete, а не Remove)
1.7. Обновляешь данные на сервере БД.

2. На стороне БД при помощи INSTEAD OF триггера удаляешь все дочерние строки родительской строки, ну и её соответственно.

Общий смысл понятен?Улыбка Фактически надо выполнить одну и туже работу на клиенте и на сервере. Клиент при обновлении БД передаёт якобы всего одну удалённую строку и сервер удаляет все соответствующие дочерние строки.

P.S. Где то у меня вертится мыслишка, что это всё как то поизящнее можно сделать, но оформить пока не могу. Если что - напишу


Dream Theater: Train of Thought
Наверх
  



ADO.NET

 Связь один ко многим в одной талице ...AlexeySM  28 May 2003 13:34
 RE: Связь один ко многим в одной талице ...Temych  28 May 2003 14:14
 RE[2]: Связь один ко многим в одной талице ...Temych  28 May 2003 15:17
 RE[3]: Связь один ко многим в одной талице ...AlexeySM  29 May 2003 15:54
 RE[4]: Связь один ко многим в одной талице ...Temych  29 May 2003 16:06
 RE[5]: Связь один ко многим в одной талице ...AlexeySM  30 May 2003 09:09
 RE: Связь один ко многим в одной талице ...AntonGart  28 May 2003 13:50
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта