0

我有一个“分层”应用程序:

  • 演示MVC
  • 服务层
  • 业务逻辑层 (BLL)
  • 数据层

我正在对所有层使用来自 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;
}

问题是我在员工内部的图像列表中遇到了一个异常“对象处理”,我不知道为什么。

谢谢!!!

4

1 回答 1

1

很可能是因为延迟加载。您的GetAll方法在加载员工后创建上下文并处理上下文,但延迟加载需要上下文才能保持活动状态。您必须重新设计您的应用程序并在服务层控制上下文生命周期,或者您不能使用延迟加载。

顺便提一句。如果服务层代表远程层(WCF 或任何其他技术),则根本不应该使用延迟加载。

于 2012-05-10T08:04:01.420 回答