powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / удаление из табл с рекурсивной связью
7 сообщений из 7, страница 1 из 1
удаление из табл с рекурсивной связью
    #34630895
NoiRe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица типа Eployees в Nothwind
т.е. с рекурсивной связью

загружаю в типизированный датасет,
при удалении родительских строк должны удалиться дочерние.
всё прекрасно удаляется, но как начинаю передавать изменения в базу вылетает ошибка
concurrency violation: the deletecommand affected 0 records

в БД на таблицу навесил тригер который удаляет дочерние записи

как бороться с проблемой?
...
Рейтинг: 0 / 0
удаление из табл с рекурсивной связью
    #34631291
Decard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалять таблицы в нужном порядке ( при условии что в датасете есть каскады, а в базе нет).
Удалять сначала дочернюю, потом материнскую записи...+ осторожнее с идентити (если она есть опять же)
...
Рейтинг: 0 / 0
удаление из табл с рекурсивной связью
    #34631483
NoiRe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DecardУдалять таблицы в нужном порядке ( при условии что в датасете есть каскады, а в базе нет).
Удалять сначала дочернюю, потом материнскую записи...+ осторожнее с идентити (если она есть опять же)

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

скорее всего адаптер с ума сходит потому что rowsaffected возращает другое значение,
а с идентити - что за грабли?
...
Рейтинг: 0 / 0
удаление из табл с рекурсивной связью
    #34631961
Decard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NoiRe
скорее всего адаптер с ума сходит потому что rowsaffected возращает другое значение,
а с идентити - что за грабли?
Если в базе идентити надо возвращать ID клиенту при каждой записи. А именно добавлять в Insert запрос адаптера что-то вроде "select @Id = @@IDENTITY". Это раз. Второе рекомендуеться в датасетет на клиенте ставить Step автогенерации в -1, чтобы ключи на клиенте отличлись от ключей сервера...ну и соответвенно правильный порядок обновления таблиц. Прямой при получении и обратный при удалении.
...
Рейтинг: 0 / 0
удаление из табл с рекурсивной связью
    #34632297
NoiRe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Decard NoiRe
скорее всего адаптер с ума сходит потому что rowsaffected возращает другое значение,
а с идентити - что за грабли?
Если в базе идентити надо возвращать ID клиенту при каждой записи. А именно добавлять в Insert запрос адаптера что-то вроде "select @Id = @@IDENTITY". Это раз. Второе рекомендуеться в датасетет на клиенте ставить Step автогенерации в -1, чтобы ключи на клиенте отличлись от ключей сервера...ну и соответвенно правильный порядок обновления таблиц. Прямой при получении и обратный при удалении.

гых
ето понятно,
update работает ннормуль
при delete траблы
...
Рейтинг: 0 / 0
удаление из табл с рекурсивной связью
    #34632455
Decard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NoiRe
гых
ето понятно,
update работает ннормуль
при delete траблы
Траблы при удалении часто бывают как раз от несовпадения ключей в базе и на клиенте.
Смоделируйте ситуацию с возникновением "ямы" в базе и посмотрите.
1. Запустите приложение. создайте запись и сохраните её в базу.
2. Удалите запись.
3. Перезапустите приложение. Создайте запись. и попробйте удалить.
если не выходит..значит дело в несовпадении ключей.
...
Рейтинг: 0 / 0
удаление из табл с рекурсивной связью
    #34632609
NoiRe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Decard NoiRe
гых
ето понятно,
update работает ннормуль
при delete траблы
Траблы при удалении часто бывают как раз от несовпадения ключей в базе и на клиенте.
Смоделируйте ситуацию с возникновением "ямы" в базе и посмотрите.
1. Запустите приложение. создайте запись и сохраните её в базу.
2. Удалите запись.
3. Перезапустите приложение. Создайте запись. и попробйте удалить.
если не выходит..значит дело в несовпадении ключей.
ок
попробую
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / удаление из табл с рекурсивной связью
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]