Entity Framework: как читать текущие данные после удаления из ссылочной таблицы - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть три таблицы Job, Contact и справочная таблица между ними с именем JobContact. Когда я удаляю запись из таблицы JobContact, запись удаляется из базы данных, но она все еще присутствует в коде. Я имею в виду, когда я делаю выбор Job по ключу и когда я обращаюсь к job.JobContact, поэтому запись все еще там.

Как заставить EF получать текущие данные из этой таблицы?

Отредактировано:

Я использую EF для удаления записи. Вот пример кода, как я это делаю:

Шаг 1: удалить запись из JobContact:

var jobContactRepos = RepositoryFactory.GetRepository<JobContact>();    
var jobContact = jobContactRepos.SelectByKey(jobContactId);

jobContactRepos.Delete(jobContact);
jobContactRepos.Save(); 

Шаг 2: получить запись задания из БД после выполнения шага 1:

var jobRepos = RepositoryFactory.GetRepository<Job>();
var job = jobRepos.SelectByKey(id);

После шага 1 запись удаляется из БД: все в порядке.

После шага 2 запись все еще присутствует в задании. Сущность JobContact: все не в порядке.

RepositoryFactory создает уже новый контекст. Так что я не понимаю. В каком месте моего кода мне следует использовать метод Refresh ()?

спасибо

1 Ответ

0 голосов
/ 19 сентября 2011

Вы можете избавиться от своего контекста EF и создать новый, это заставит EF получать свежие данные из БД вместо использования, возможно, кэшированных данных.В качестве альтернативы вы можете вызвать Refresh() в вашем контексте, используя RefreshMode.StoreWins.

Но реальный вопрос заключается в том, почему вы удаляете эту запись из базы данных напрямую и не используете для нее EF?Если бы вы использовали контекст EF для удаления сущности Contact из коллекции свойств навигации Contacts вашей сущности Job, этой проблемы не должно быть вообще.

Редактировать:

Справочная таблица должна быть представлена ​​в EF как свойство навигации Contacts в ваших Job сущностях и свойство навигации Jobs в ваших Contact сущностях.Используете ли вы более старую версию EF (я, вероятно, недостаточно знаком с предыдущими версиями) или у вас есть пользовательский уровень репозитория, который представляет эту ссылочную сущность?

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