Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
Добрый день! Использую WebForms. Столкнулся с такой проблемой что при удалении записи, id которой используется в другой таблице(FOREIGN KEY REFERENCES) возникает исключение. Оно-то и правильно. Предположим что я через попытка-исключение поймаю этот момент Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. , но этот метод вызывается в отдельном классе где я не могу сделать Response.Redirect Вопрос как при такой ошибке выдать отдельную страницу где дать информацию о том в каких строках других таблиц используется удаляемый id ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 11:22 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
AspUser, ... может, не стоит доводить до ошибки, а предварительно проверить наличие id в другой таблице чем-то типа select count ... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 11:33 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
может быть, предположим так и сделаем, но как обойти все таблицы имеющие возможно ссылки на удаляемую строку ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 11:40 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
AspUserВопрос как при такой ошибке выдать отдельную страницу где дать информацию о том в каких строках других таблиц используется удаляемый id ?Зачем? Какой в этом смысл для пользователя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 11:57 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
AspUserможет быть, предположим так и сделаем, но как обойти все таблицы имеющие возможно ссылки на удаляемую строку ? .. у вас, как мне кажется, подход не совсем верный к тому, что называется громким словом "архитектура" ... Зачем гадать "любит/не любит", если можно заранее ставить строке признак в поле, например, "ext_ref" - yes/no - и по его проверке гасить/не трогать ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 12:05 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
Ну если надо удалить запись, что бы понимать где высвободить ссылку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 12:06 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
AspUserНу если надо удалить запись, что бы понимать где высвободить ссылкуЧтобы "высвободить ссылку", необходимо при создании внешнего ключа на таблицу Championships в базе, указать ON DELETE SET NULL, или ON DELETE SET DEFAULT. Либо реализовать это самостоятеьно в методе DeleteChampionship. Пользователь не поймёт сообщения о каких-то FOREIGN KEY REFERENCES. Он говорит на языке предметной области, а не на языке физической модели БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 12:24 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
Спасибо как вы и подсказали пошел вариантом реализовать алгоритм при удалении получается как-то так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. просто в будущем хочется сделать один метод передав в который имя таблицы можно будет собрать список таблиц ссылающихся на нее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 12:44 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
AspUser, зачем Вам никому не нужный метод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 12:51 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
T-SQL: Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 12:57 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
ты думаешь там только один уровень зависимостей? ты думаешь у тебя море прав обойти вес граф зависимостей? и это при каждом чихе (даже если есть права)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 16:27 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
ViPRosты думаешь там только один уровень зависимостей? В условиях задачи этого не было. Будет 2 уровня зависимостей, будем писать аналитику. Твои обобщения идут лесом. ViPRosты думаешь у тебя море прав обойти вес граф зависимостей? Причем тут права? О них вообще не было речи. ViPRosи это при каждом чихе (даже если есть права)? Никаких каждых чихов. Решается конкретная задача. Выдумывать новые требования, обобщать логику на пустом месте и раздувать губы от того, что ты поборол коня в вакууме - не есть правильный способ решить задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 16:33 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
МСУ, угу вот и каждый день и "решаете" одни и те же "задачи" подфорум "проектирование БД" изо дня в день в течении последних 7-8 лет задает один и тот же вопрос - как смоделировать Объект с динамическими свойствами (а других объектов в жизни не существуют, только артефакты в статике) и решают, решают... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 17:14 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
ViPRosМСУ, угу вот и каждый день и "решаете" одни и те же "задачи" Есть требования - есть решение. Зачем что-то еще сюда пихать? ViPRosподфорум "проектирование БД" изо дня в день в течении последних 7-8 лет задает один и тот же вопрос - как смоделировать Объект с динамическими свойствами (а других объектов в жизни не существуют, только артефакты в статике) и решают, решают... Какое это имеет отношение к топику? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 17:18 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
AspUserДобрый день! Использую WebForms. Столкнулся с такой проблемой что при удалении записи, id которой используется в другой таблице(FOREIGN KEY REFERENCES) возникает исключение. Оно-то и правильно. Предположим что я через попытка-исключение поймаю этот момент Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. , но этот метод вызывается в отдельном классе где я не могу сделать Response.Redirect Вопрос как при такой ошибке выдать отдельную страницу где дать информацию о том в каких строках других таблиц используется удаляемый id ?На уровне контроллера или фильтра контроллера сделать централизованный анализ исключений с редиректом в соответствующем случае. Можно сделать сообщение общего вида: "Нельзя удалять объект, на который ссылаются другие объекты". Можно из сообщения об ошибке извлечь имя foreign key и вывести более подробное сообщение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 17:26 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
Алексей К Можно сделать сообщение общего вида: "Нельзя удалять объект, на который ссылаются другие объекты". Можно из сообщения об ошибке извлечь имя foreign key и вывести более подробное сообщение. ну а что дальше делать? ему то ваще то надо удалить эту запись :) кому звонить то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 17:29 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
ViPRosАлексей К Можно сделать сообщение общего вида: "Нельзя удалять объект, на который ссылаются другие объекты". Можно из сообщения об ошибке извлечь имя foreign key и вывести более подробное сообщение. ну а что дальше делать? ему то ваще то надо удалить эту запись :) кому звонить то?+100500 На фиг это не нужно пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 17:46 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
ViPRosты думаешь там только один уровень зависимостей? ты думаешь у тебя море прав обойти вес граф зависимостей? и это при каждом чихе (даже если есть права)?Это ты меня спросил? Лично я не думаю, я вижу, что там. Тут гением не надо быть, по коду ТС все читается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 17:48 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
skyANA, да ни к кому нет у меня вопросов и претензий вот раньше мужик был, Райкин звали, он никаких вопросов и претензий тоже не имел, но у него это получалось лучше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 17:58 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
ViPRosАлексей К Можно сделать сообщение общего вида: "Нельзя удалять объект, на который ссылаются другие объекты". Можно из сообщения об ошибке извлечь имя foreign key и вывести более подробное сообщение. ну а что дальше делать? ему то ваще то надо удалить эту запись :) кому звонить то?Скорее всего - ничего. Обычно такие записи неудаляемы. Но возможность удаления нужна: например ошибочно был добавлен "сотрудник", пока он ни в каких оперативных журналах не фигурирует, его можно удалить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 18:53 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
Алексей КViPRosпропущено... ну а что дальше делать? ему то ваще то надо удалить эту запись :) кому звонить то?Скорее всего - ничего. Обычно такие записи неудаляемы. Но возможность удаления нужна: например ошибочно был добавлен "сотрудник", пока он ни в каких оперативных журналах не фигурирует, его можно удалить. ... здесь, скорее всего, подход 1С более эффективен - до проводки документа можно делать всякие безобразия, а вот на этапе проводки он вам все и выскажет ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 19:02 |
|
||
|
Используя EntityFramework обработать ссылочную целостность в sql-таблицах
|
|||
|---|---|---|---|
|
#18+
Алексей КСкорее всего - ничего. Обычно такие записи неудаляемы. Но возможность удаления нужна: например ошибочно был добавлен "сотрудник", пока он ни в каких оперативных журналах не фигурирует, его можно удалить. тут скорее не об "неудаляемости" надо говоритть, а о "не опубликованности", как справедливо заметил коротких ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 20:10 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38795416&tid=1356893]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
53ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 434ms |

| 0 / 0 |
