Обновление сущностей в Entity Framework приводит к созданию новых строк - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть ситуация, когда у меня есть таблица пользователей и таблица местоположений. Между этими двумя отношениями существует много-много, поэтому они объединяются через таблицу ссылок, которая состоит из двух столбцов; UserID и LocationID. Это FK для столбцов ID в таблицах User и Location соответственно.

Я хочу иметь возможность обновлять текущих пользователей, чтобы связать их с текущими местоположениями и наоборот. Пользователи уже существуют, и местоположения уже существуют в БД, но в настоящее время нет никакой связи между ними.

Когда я обновляю объект User, несмотря на то, что я установил свойство UserLocations в список Locations, которые я хочу связать вместе (вместе с идентификатором, заполняемым правильно), и непосредственно перед обновлением все выглядит хорошо, при вставке в БД для каждой записи в списке создается новое местоположение в таблице Location. Это приводит к тому, что в сущности повторяются строки только с разными PK. Я еще не дошел до этого, но я предполагаю, что, как только я попытаюсь реализовать ту же функциональность в локациях, он будет дублировать пользователей.

Например, для пользователя с идентификатором 1 и списком местоположений с идентификаторами 1, 2 и 3. Я ожидаю, что строки в таблице ссылок будут иметь значения 1 | 1, 1 | 2 и 1 | 3. Тем не менее, он создает три новых местоположения с идентификаторами 4, 5 и 6, но остальные данные идентичны идентификаторам 1, 2 и 3 и вставляет 1 | 4, 1 | 5 и 1 | 6 в таблицу ссылок .

Если бы я предоставил Entity Framework список объектов, у которых уже есть заполненные идентификаторы, я бы ожидал, что он распознает, что в базе данных уже существует строка, и просто использовал этот идентификатор для вставки в ссылку UserLocation. таблица.

У кого-нибудь есть идеи о том, что я здесь делаю неправильно?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...