c# - 操作无法完成,因为 DbContext 已在 Web API 中释放
问题描述
我的 api 调用抛出异常“操作无法完成,因为 DbContext 已被释放”。请指导如何解决它..
在名为 Common Class 的单独类中定义的函数
public IQueryable productquery()
{
try
{
using (ERPEntities db = new ERPEntities())
{
db.Configuration.ProxyCreationEnabled = false;
var query = db.Products.OrderBy(x => x.ID).AsQueryable();
var list = query.Skip(10).Take(50).AsQueryable();
return list;
}
}
catch (Exception ex)
{
throw;
};
}
普通函数到 api 控制器的函数调用
[HttpPost]
public IHttpActionResult GetProducts()
{
try
{
var result = _commonFunctions.productquery();
var resultf = result.Include(x => x.Catagory).ToList();
return Ok(resultf);
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
解决方案
在您的 DbContext 被处置后,您正试图包含一个实体。
var resultf = result.Include(x => x.Catagory).ToList();
但是您使用using
内部 productquery() 方法调用 DbContext 。如果您想继续这样做,您应该在 using 部分完成所有 db 操作。
var query = db.Products.Include(x => x.Catagory).OrderBy(x => x.ID).AsQueryable();
推荐阅读
- python - 使用类时tkinter窗口未打开
- python - 带有等高线图的 FacetGrid
- python - Python:Phantomjs 找不到 chrome webdriver 工作正常的元素
- c++ - 尽管我提供了参数,为什么我在这里得到垃圾值?
- javascript - 是否可以在 Antd 模态标题中添加按钮?
- .htaccess - Mod Rewrite 的 Apache 问题所有 POST 在重写之前已被重定向到 R=501 的 GET
- oracle - Oracle,检查一行是否有更改,然后在数据发生更改时更新
- javascript - 在角度 12 中多次调用 document.readystatechange?
- activemq - ActiveMQ XStream ForbiddenClassException
- javascript - 文本区域大小随浏览器而变化