我有一个'分层'应用程序:
我正在使用来自EntityFramework模型的实体 - 所有层的第一种方法。 我也在使用延迟加载。
例如,我有一个Employee实体:
[Serializable]
[DataContract]
public class Employee
{
[DataMember]
public string name { get; set; }
[DataMember]
public List<Image> images { get; set; }
}
在DataLayer中,我有一个EmployeeDAO,其操作如下:
public List<Employee >GetAll()
{
List<Employee> resultList;
using (ModelContainer ctx = new ModelContainer()) // DbContext
{
resultList = ctx.Employees.All<Employee>().ToList<Employee>();
}
return resultList;
}
问题是我在员工内部的图像列表中遇到了“对象处理”异常,我无法弄清楚原因。
感谢!!!
答案 0 :(得分:1)
很可能是因为延迟加载。您的GetAll
方法会在加载员工后创建上下文并处理上下文,但延迟加载需要上下文保持活动状态。您必须重新设计应用程序并控制服务层上的上下文生命周期,否则您不能使用延迟加载。
顺便说一下。如果服务层代表远程层(WCF或任何其他技术),则根本不应使用延迟加载。