Свойство навигации объекта Entity устанавливается в нуль после десериализации - PullRequest
1 голос
/ 25 ноября 2011

Я работаю над приложением WPF, архитектор -

WPF-> WCF-> DAL

проблема в том, что когда я вызываю метод WCF, он возвращает объект. Все до уровня WCF работает просто отлично, но при возврате объекта после WCF мои свойства навигации устанавливаются в ноль.

Я возвращаю объект (POCO) объекта класса Department, а его свойство навигации - Employees. Я проверял атрибут [DataMember], это не так. Но как только он достигает MainUI, его свойство Employees становится равным нулю.

Код моего свойства навигации выглядит так

Спасибо

1 Ответ

3 голосов
/ 25 ноября 2011

Полагаю, это происходит потому, что свойства навигации загружены лениво.Когда вы пытаетесь получить к ним доступ, они не могут быть загружены, потому что контекст удаляется.Вы должны загружать их охотно или явно при загрузке основного свойства.

Стремительная загрузка:

from d in context.Department.Include("Employees")
select d;

Явная загрузка:

var departments = (from d in context.Department
                   select d).ToList();
departments.ForEach(e => e.EmployeesReference.Load());

РЕДАКТИРОВАТЬ ПОСЛЕ ВОПРОСАРЕДАКТИРОВАТЬ

Проблема может быть в строке:

department.FirstOrDefault().Employees = employees.ToFixupCollection();

Попробуйте изменить ее на:

department.FirstOrDefault().Employees = employees.ToList<Employee>();
...