Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc DbContext-对象内的列表被释放_Asp.net Mvc_Entity Framework - Fatal编程技术网

Asp.net mvc DbContext-对象内的列表被释放

Asp.net mvc DbContext-对象内的列表被释放,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我有一个“分层”应用程序: 陈述 服务层 业务逻辑层(BLL) 数据层 我对所有层使用EntityFramework模型优先方法中的实体。 我也在使用延迟加载 例如,我有一个员工实体: [Serializable] [DataContract] public class Employee { [DataMember] public string name { get; set; } [DataMember] public List<Image>

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

  • 陈述
  • 服务层
  • 业务逻辑层(BLL)
  • 数据层
我对所有层使用EntityFramework模型优先方法中的实体。 我也在使用延迟加载

例如,我有一个员工实体:

[Serializable]
[DataContract]
public class Employee 
{
    [DataMember]
    public string name { get; set; }
    [DataMember]
    public List<Image> images { get; set; }
}
[可序列化]
[数据合同]
公营雇员
{
[数据成员]
公共字符串名称{get;set;}
[数据成员]
公共列表图像{get;set;}
}
例如,在数据层中,我有一个EmployeeDAO,其操作如下:

public List<Employee >GetAll()
{
    List<Employee> resultList;

    using (ModelContainer ctx = new ModelContainer()) // DbContext
    {
        resultList = ctx.Employees.All<Employee>().ToList<Employee>();
    }

    return resultList;
}
public ListGetAll()
{
列表结果列表;
使用(ModelContainer ctx=newmodelcontainer())//DbContext
{
resultList=ctx.Employees.All().ToList();
}
返回结果列表;
}
问题是我在一个员工的图片列表中得到了一个异常“objectdisposed”,我不知道为什么


谢谢

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


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

是的,我已经更改了它。现在,我没有在DbContext中使用延迟加载和搜索Include方法来获取某个对象的list对象。谢谢你,拉迪斯拉夫!!