Я использую EF 4.1 и все еще пытаюсь выяснить некоторые детали. У меня есть родительские (один)-дочерние (многие) отношения в базе данных. Объект EF, представляющий этот дочерний элемент, имеет свойство, представляющее одного родителя. Я явно устанавливаю поле child.parentId FK, а затем могу сделать context.Add(child), за которым следует context.SaveChanges(), и дочерняя запись с правильным родительским внешним ключом появляется в базе данных. Все хорошо, что касается БД.
Однако, хотя дочерний объект в памяти корректно обновляется такими вещами, как столбец идентификации PK, поле родительского свойства остается пустым. Меня это удивило, это нормально? Как только запись создана и я возвращаюсь в приложение, навигация к родителю всегда работает. Просто кажется, что сразу после создания дочернего элемента родительское свойство навигации не обновляется.
Я подумал, что, возможно, тогда я мог бы просто найти контекст для только что созданного дочернего элемента на основе возвращенного PK и получить полностью заполненный дочерний объект, но это не работает. Кажется, я просто возвращаю идентичный объект. Я думаю, что это просто поиск в локальном кеше и возврат объекта, который у меня уже есть. Я заметил, что context.Child.Local кажется способом взглянуть только на локальное представление, но я не видел аналога «магазина».