我有一个使用 Entity Framework 5 连接到 Sql Server 的数据层。我还有一个获取一些数据的 LINQ 查询。当与 Web API 一起使用时,此查询失败。我得到 ObjectDisposedException。这是查询:
using (MyContext container = new myContext())
{
return container.Sales
.Include("Products")
.Where(s => s.Id == id)
.FirstOrDefault();
}
数据层是一个dll,暴露给业务层,也是一个dll,由web api controller调用。我曾假设 JSON 序列化程序延迟加载包含,但我的修复都没有奏效。有任何想法吗?如果缺少信息,我会根据需要更新问题。
下面是业务层对数据层的调用:
public Sale GetSale(int id)
{
SaleRepository s = new SaleRepository();
return s.GetSale(id);
}
最后是对业务层的 web api 调用:
public Sale GetSale(int id)
{
SaleManager s = new SaleManager();
return s.GetSale(id);
}
异常(exception)情况:
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
最佳答案
发生这种情况是因为在处理完 DbContext
后才执行延迟加载。
要解决此问题,您可以通过执行以下操作来禁用延迟加载:
container.Configuration.LazyLoadingEnabled = false;
关于c# - Entity Framework 和 Web API ObjectDisposedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15573701/