反序列化后,实体对象的导航属性设置为null

时间:2011-11-25 07:09:11

标签: c# wpf entity-framework serialization deserialization

我正在开发一个WPF应用程序,架构师是

WPF-> WCF-> DAL

问题是当我调用WCF方法时,它返回对象。 WCF级别以上的所有内容都可以正常工作,但在返回对象时,在WCF之后我的导航属性设置为null。

我将返回Department类的对象(PO​​CO)对象,其导航属性为Employees。我验证了[DataMember]属性,但事实并非如此。但是当它到达MainUI时,其Employees属性设置为null。

我的导航属性的代码看起来像那样

由于

1 个答案:

答案 0 :(得分:3)

我认为这是因为导航属性是延迟加载的。当您尝试访问它们时,无法加载它们,因为上下文已被释放。加载主属性时,应该热切地或明确地加载它们。

渴望加载:

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>();