Подтвердить что ты не робот

Entity Framework 4 Исправление загрузки ссылок

У меня возникают проблемы с загрузкой ссылки на родительский объект в Entity Framework 4. Из-за Lazy Загрузка ссылки на родительский объект (Условие) не загружается на дочерний объект (DiscountLevel), поэтому я пытаюсь загрузить его с:

if(!this.ConditionReference.IsLoaded) this.ConditionReference.Load();

Но это вызывает следующее исключение:

ссылка на объект не может быть загружена, поскольку она не привязана к объектуcontext

Итак, если я попытаюсь привязать существующий дочерний объект (DiscountLevel) к Контексту объектов (а затем загрузить родительскую ссылку впоследствии):

context.AttachTo("tblDiscountLevel", this);

Я получаю следующее исключение:

Объект с тем же ключом уже существует в ObjectStateManager. Существующий объект находится в состоянии "Отдельно". Объект может быть добавлен только в ObjectStateManager, если он находится в добавленном состоянии.

Я чувствую, что в первую очередь делаю что-то неправильно, но я не могу понять, что. Поэтому всякая помощь по этой теме очень ценится. Дайте мне знать, если вам нужна дополнительная информация!

4b9b3361

Ответ 1

Я наткнулся на проблему, и мне не пришлось ничего делать с приведенным выше кодом: Есть несколько расчетов в разных перезаписанных OnChange-методах в DiscountLevel, которые терпят неудачу, если их называют слишком рано - в этом случае на начальная загрузка из БД. Это привело к тому, что объект Child не был правильно инициализирован - появлялся, как будто он не загружался снаружи.

Реализация простой переменной bool, которая подавляла выполнение OnChange-методов при начальной загрузке, все работало должным образом. Может быть более элегантное решение с функциями, предоставляемыми Entity Framework, но это сработало для меня.