Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как добавить данные в 2 таблицы (один-ко-многим), в ADO.NET 2.0, с учётом того что... 
V
    Опции темы
Rapalex
Дата 17.10.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: нет
Всего: 8



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


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
mr.DUDA
Дата 17.10.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



На уровне кода, делают датасет (лучше типизированный - его в дизайнере "нарисовать" можно) с двумя таблицами и relation между ними. Запись в parent-таблицу добавляется "как обычно". В child-таблицу запись добавляется с указанием, к какой записи из parent-а она относится. При заполнении датасета адаптером, вначале делаем Fill для parent-таблицы, затем - для child-таблицы, так мы гарантируем что битых связей не будет. При сохранении в БД соблюдаем тот же порядок для вызова метода Update.

P.S. если вопрос был не об этом, уточните


--------------------
user posted image
PM MAIL WWW   Вверх
Rapalex
Дата 17.10.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: нет
Всего: 8



Цитата(mr.DUDA @  17.10.2006,  13:39 Найти цитируемый пост)
вначале делаем Fill для parent-таблицы, затем - для child-таблицы

Цитата(mr.DUDA @  17.10.2006,  13:39 Найти цитируемый пост)
 При сохранении в БД соблюдаем тот же порядок для вызова метода Update.

А если в момент между заполнением датасета его обновлением была добавлена новая запись, и огда первичные ключи в базе получатся не такие как были в оперативе?


Это сообщение отредактировал(а) Rapalex - 17.10.2006, 14:54


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
mr.DUDA
Дата 17.10.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Цитата(Rapalex @  17.10.2006,  14:53 Найти цитируемый пост)
А если в момент между заполнением датасета его обновлением была добавлена новая запись, и огда первичные ключи в базе получатся не такие как были в оперативе?

В БД и датасете ключи не связаны друг с другом. Другое дело, метод Update обновляет ключи в датасете и связи по ключевым полям сохраняются.


--------------------
user posted image
PM MAIL WWW   Вверх
Rapalex
Дата 17.10.2006, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: нет
Всего: 8



Т.е. я о значениях ключей могу не беспокоится, сколько бы людей с этой базой не работало?

Добавлено @ 16:36 
Тогда следующий вопрос почему в сгенерированом методе AddRow который берёт все значения для столбцов нужно указывать все поля включая вычисляемые?

Добавлено @ 16:37 
И можно ли от лишних входных параметров избавиться?

Это сообщение отредактировал(а) Rapalex - 17.10.2006, 16:34


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
mr.DUDA
Дата 17.10.2006, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Если поставить у поля датасета Readonly = true, то поле не надо будет передавать в AddRow


--------------------
user posted image
PM MAIL WWW   Вверх
Rapalex
Дата 18.10.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: нет
Всего: 8



Так мои вычислемые столбцы сами установили это свойство когда я выражение задал, а входной параметр требуется!!!

А вопрос с транзакциями, так чтоб именно в две таблицы данные добавились, а то вдруг в одну добавятся а в другую нет?

Это сообщение отредактировал(а) Rapalex - 19.10.2006, 14:32


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
iad
Дата 9.10.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 10.9.2007
Где: Москов

Репутация: нет
Всего: -2



Цитата(Rapalex @  17.10.2006,  17:34 Найти цитируемый пост)
Т.е. я о значениях ключей могу не беспокоится, сколько бы людей с этой базой не работало?
Только если ключи типа GUID в противном случае возможны ошибки.

Цитата(Rapalex @  18.10.2006,  11:53 Найти цитируемый пост)
А вопрос с транзакциями, так чтоб именно в две таблицы данные добавились, а то вдруг в одну добавятся а в другую нет?
А в чем вопрос? начианешь тразакцию, делаешь обновления, делаешь тразакции Commit() если хочешь сохранить изменения или RollBack()если что-то не так..

PM MAIL   Вверх
Rapalex
Дата 23.5.2008, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: нет
Всего: 8



Всем спасибо.


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0599 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.