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)
- 数据层
[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对象。谢谢你,拉迪斯拉夫!!