Привет всем. Проблема следующая:
В типизированном датасете есть две таблицы например Master и Details. отношение один ко многим Master-Details. Ключи таблиц проставляются инкрементом. Допустим были вставлены одна запись в Master(родительская) и несколько записей в Details(дочерняя).При этом запись в таблице Master получила id = 100 и записи в Details ссылаются на этот id. Теперь при апдейте родительской таблицы вставленая запись получила в БД другое значение, например 101.Т.е. в Датасете как висело 100 так и висит, пока не сделаешь заново Fill. В этой ситуации апдейт дочерней таблицы не пройдет, т.к. у нее ссылки на 100 а не на 101.
Как сделать, чтобы после апдейта таблица Master обновлялась при получении другого id и на основании этого обновлялись ссылки в таблице Details(дочерняя), чтобы можно было сделать корректно инсерт дочерней таблицы. Надеюсь ясно изъяснился)))
Первое, что приходит в голову:
— Пропиши UPDATE CASCADE и DELETE CASCADE для связи (большинство СУБД это поддерживают)
Второе, что приходит в голову:
-Зачем понадобилось менять ключи?
Здравствуйте, chaynik_, Вы писали:
_>Привет всем. Проблема следующая: _>В типизированном датасете есть две таблицы например Master и Details. отношение один ко многим Master-Details. Ключи таблиц проставляются инкрементом. Допустим были вставлены одна запись в Master(родительская) и несколько записей в Details(дочерняя).При этом запись в таблице Master получила id = 100 и записи в Details ссылаются на этот id. Теперь при апдейте родительской таблицы вставленая запись получила в БД другое значение, например 101.Т.е. в Датасете как висело 100 так и висит, пока не сделаешь заново Fill. В этой ситуации апдейт дочерней таблицы не пройдет, т.к. у нее ссылки на 100 а не на 101. _>Как сделать, чтобы после апдейта таблица Master обновлялась при получении другого id
вернуть этот ID из процедуры как OUTPUT параметр, при этом в SqlParameter должно быть корректно выставлено его направление и исходная колонка
_>и на основании этого обновлялись ссылки в таблице Details(дочерняя), чтобы можно было сделать корректно инсерт дочерней таблицы. Надеюсь ясно изъяснился)))
Поставить в датасете cascade update на этот ключ
Здравствуйте, RushDevion, Вы писали:
RD>Первое, что приходит в голову: RD>- Пропиши UPDATE CASCADE и DELETE CASCADE для связи (большинство СУБД это поддерживают)
Чем это поможет в обновлении датасета?
RD>Второе, что приходит в голову: RD>-Зачем понадобилось менять ключи?
Потому, что заранее не угадать, какое identity сгенерируется