170 похожих чатов

Пытаюсь добавить id существующей записи одной таблицы в колонку другой

таблицы.
При попытке добавить новую запись в таблицу Client со связью на существующую запись в таблице Manager ловлю такой екзепшн.

EF пытается создать новую запись в таблице Manager, чтобы связать её с новой записью в таблице Client. Как исправить данную проблему?

6 ответов

15 просмотров

Для этого нужно либо приаттачить руками сущность менеджера со статусом "NotChanged", либо создать в Client свойство с Id менеджера и присваивать туда id, а не объект целиком.

Потому что если этого не делать EF находит объект менеджера, который он ещё не видел в этом контексте (никто его из базы не запрашивал, он вообще снаружи откуда-то) и предполагает, что программист пытается создать новую запись так.

Fil-Romanov Автор вопроса
SomebodyOdd
Потому что если этого не делать EF находит объект ...

спасибо большое, разобрался! А как вообще EF понимает те случаи, когда этот тот же объект? совпадает какой то хеш код запрошенного объекта и объекта какой то промежуточной искусственной базы данных? Сейчас отследил переменную на протяжении её жизни - GetHashCode возвращает одно и то же значение.

Fil Romanov
спасибо большое, разобрался! А как вообще EF пони...

По ссылке на объект. GetHashCode переопределяли? А вообще, можно это почитать. https://docs.microsoft.com/ru-ru/ef/core/change-tracking/

Fil-Romanov Автор вопроса
SomebodyOdd
По ссылке на объект. GetHashCode переопределяли? А...

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

Fil Romanov
Нет, метод не переопределял. Спасибо огромное, я н...

И вдогонку. https://docs.microsoft.com/ru-ru/ef/core/change-tracking/explicit-tracking

Похожие вопросы

Обсуждают сегодня

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
Всем привет. Сейчас я изучаю erlang по книге Erlang and OTP in action. Дошел до главы где реализуется первый gen server на примере tcp rpc сервера. Меня очень сильно смутил ко...
Freezing Death
10
что за асемблер кста?
Shvabrikk Nya
19
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
Подскажите... Есть ли название у способа разработки кода, в котором: сперва пишут минимальную рабочую структуру: Напр. ввод, обработка, вывод, контроль. Потом эту структуру д...
Budemposmotret
6
В дизассемблере вижу, что строки пихают в регистры через lea, почему так, а не через mov?
Oleg
8
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Сделал краткий обзор магазина из статьи и заодно там же записал инструкцию по развёртыванию. https://www.youtube.com/watch?v=8-sE1vNk95Q (чё думаете по звуку? кое-что поменял...
Andrey K
17
Карта сайта