Entity Framework 4: Как получить исходные значения дочернего объекта при сохранении родителя? - PullRequest
0 голосов
/ 16 июня 2011

Я видел много сообщений на SE, касающихся этого, но ни один не ответил удовлетворительно на вопрос.Если есть сообщение, которое действительно отвечает на это (с реальным примером кода), то, пожалуйста, укажите мне в этом направлении.

Мне нужно записать информацию в журнал при сохранении объекта.Мне нужно знать исходные значения и новые значения.Это очень легко для родительского объекта, и даже довольно просто получить значения new для любых измененных дочерних объектов.Сложность заключается в получении исходных значений дочернего объекта.

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

ObjectStateEntry содержит текущие значения иисходные значения родительского объекта, но как мне получить текущие и исходные значения измененного дочернего объекта?

Кажется, что это то, что должно быть возможным, но оно слишком сложное для выполнения или имеетбыла упущена командой разработчиков Microsoft.

Заранее благодарим за любую помощь.

1 Ответ

0 голосов
/ 16 июня 2011

Точно так же, как вы всегда получаете это: вы смотрите это.Помните, в вашем случае «дочерний объект» может даже не загружаться из БД. нет требования сделать это перед изменением значения FK на «родительском».

Не похоже, что вы на самом деле изменили «дочерний объект» . Скорее, вы просто изменили «родительский», чтобы он указывал на другой дочерний объект.

В этом случае я бы использовал Context.GetObjectByKey (), чтобы извлечь объект на основе исходного значения FK.Он захватывает его из памяти, если он загружен, и из БД, если нет.

...