|
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 37
|
|
DB контекст не формирует запрос на обновление первичного ключа17.01.2025, 22:42. Показов 4672. Ответов 41
Метки нет (Все метки)
При попытке сохранения изменений значения первичного ключа ошибка. (EF NET 8)
The property 'ТАБЛИЦА.ПОЛЕ_В_ПЕРВИЧНОМ_КЛЮЧЕ' is part of a key and so cannot be modified or marked as modified. To change the principal of an existing entity with an identifying foreign key, first delete the dependent and invoke 'SaveChanges', and then associate the dependent with the new principal. Например, есть таблица тарифов (ключ - id) и история ставок тарифов (ключ id, dstart) . У истории ставок нет дочерних таблиц. При редактировании в таблице истории ставок существующей записи поля dstart (часть первичного ключа) и сохранении в SaveChanges выходит выше указанное предложение. Как то глупо получается. Надо удалить запись и ввести новую с новой датой. Образно говоря оператор внес информацию, сохранил ее, потом увидел, что ошибся в дате, пытается изменить дату, но ему предлагается удалить все что он ввел и внести информацию заново. Кто что делает в таком случае?
0
|
|
| 17.01.2025, 22:42 | |
|
Ответы с готовыми решениями:
41
Обновление таблицы с сохранением первичного ключа Обновление первичного ключа через хранимую процедуру Обновление первичного ключа после выполнения запроса |
|
|
||
| 20.01.2025, 11:22 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 37
|
||||
| 20.01.2025, 11:29 [ТС] | ||||
|
Я же уже написал, что логика таблицы хранить историю определенных показателей. В этом контексте изменение пользователем части первичного ключа вполне допустимо. От того что я сделаю искусственный ключ, а текущий примари вынесу в просто уникальный ничего не поменяется. Пользователь также не сможет внести внести два одинаковых значения составного ключа. Суть в том, что удалив запись и создав ее заново - так можно, а просто изменить часть ключа - так нельзя. Но по факту результат получается одним и тем же. Добавлено через 2 минуты Добавлено через 57 секунд
0
|
||||
|
|
|
| 20.01.2025, 11:36 | |
|
0
|
|
|
|
||
| 20.01.2025, 11:42 | ||
|
0
|
||
|
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
|
||
| 20.01.2025, 11:45 | ||
|
sijuiem, удалите старую запись и создайте новую с нужными значениями ключа. Делов то.
Добавлено через 1 минуту Поэтому изменение идентификатора нежелательно. Паспорт вы тоже раз в месяц меняете? - аналогия.
0
|
||
|
|
||
| 20.01.2025, 11:46 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 37
|
||
| 20.01.2025, 11:55 [ТС] | ||
|
0
|
||
|
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
|
||
| 20.01.2025, 11:59 | ||
|
Любите секас сидя - занимайтесь
0
|
||
|
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 37
|
|||
| 20.01.2025, 12:10 [ТС] | |||
|
Малой кровью - это невидимое удаление и вставка копии удаленной записи. Добавлено через 3 минуты
0
|
|||
|
|
|||||||
| 20.01.2025, 12:15 | |||||||
|
Добавлено через 4 минуты sijuiem, Вот один из примеров как меняется структура таблицы на рабочей БД
0
|
|||||||
|
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
|
||
| 20.01.2025, 12:24 | ||
|
EF вам не дураки писали, есть свои ограничения, конечно, но все делается по канонам.
0
|
||
|
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 37
|
|
| 20.01.2025, 12:51 [ТС] | |
|
0
|
|
|
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
|
|||
| 20.01.2025, 12:57 | |||
|
Добавлено через 1 минуту С большим количеством техдолга. Намеки на это мы уже увидели.
0
|
|||
|
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 37
|
|
| 20.01.2025, 13:01 [ТС] | |
|
0
|
|
|
|
||||
| 20.01.2025, 13:13 | ||||
|
Добавлено через 1 минуту
0
|
||||
|
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,881
|
|
| 24.01.2025, 08:40 | |
|
0
|
|
|
|
|
| 24.01.2025, 08:43 | |
|
0
|
|
|
14734 / 9508 / 1364
Регистрация: 21.01.2016
Сообщений: 35,881
|
|
| 24.01.2025, 09:07 | |
|
Andrey-MSK, диалект это не наворот. Это диалект. Похожее, но не точно написание одного и того же.
1
|
|
|
|
|||||
| 24.01.2025, 09:57 | |||||
|
Не по теме:
Навыгребал из-за них кучу проблем. Самая элементарная: БД разростается, всё скинули на каскадное удаление. Через некоторое время прилетает баг "удаление занимает дофига времени", ещё через время уже прилетает критикал "удаление падает с таймаутом". Отдельный челендж, когда это удаление критично и нельзя просто пометить "удалено" и забить. Проблема номер два: ты не чекаешь что удаляешь. Т.е. удалил запись ТаблицаА, а там потянулу записи из ТаблицыВ, которые нельзя удалять (например не хватает прав). Как ты про это узнаешь? Правильно, когда прилетит внеочередной баг от QA месяца так через три-четыре. - какие таблицы, прям скрипт создания (не обязательно полный, только ключевые моменты) - краткое описание что храниться в таблице и зачем - краткое описание что вы хотите выполнить (я так понимаю поменять запись в истории?) Потому как "история" и "один-к-одному" у меня в голове не складываются. Обычно есть таблица с элементами, и таблица истории изменений, которая ссылается на таблицу элементов "один-ко-многим". Причем за правило береться что ЛЮБОЕ изменение порождает новую запись в таблице истории, вне зависимости от того правили критичную инфу или не очень. Поэтому либо не правильно организовано, либо не понял задум.
0
|
|||||
|
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 37
|
|||||||
| 28.01.2025, 14:01 [ТС] | |||||||
Пользователь при вводе новой записи в историю тарифа (в таблицу TARIFFDETAIL) ошибается с датой и сохраняет запись. Затем хочет исправить ее на правильную дату. В ADO NET - пожалуйста - нет проблем. В EF NET Core - ошибка. Сначала удали, а затем введи заново. Конечно можно сделать искусственный ключ для TARIFFDETAIL и ограничение на уникальность для связки ID_TARIFF,DSTART, но что это дает физически, кроме лишнего поля и еще одного индекса? А еще при этом нельзя будет сделать лаконичный Context.TARIFFDETAIL.Find(ID_TARIFF,DSTA RT)
0
|
|||||||
| 28.01.2025, 14:01 | |
|
Запрос на создание таблицы. Установка первичного ключа. Как выглядит SQL запрос на получение первичного ключа с таблицы Тип сущности требует определения первичного ключа, но ключа в бд нет Получение первичного ключа Автоинкремент первичного ключа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|