【问题标题】:The operation cannot be completed because the DbContext has been disposed In Mqsql and Entity Framework操作无法完成,因为 DbContext 已经在 Mysql 和 Entity Framework 中被释放
【发布时间】:2014-11-23 11:33:46
【问题描述】:

我正在从下拉选择中使用 Json 值填充文本框。 Action() 方法工作正常它返回 Json 值,但页面不会将这些值填充到 TextBoxes 控件。当我使用开发者工具时,我得到,它抛出一个错误“操作无法完成,因为 DbContext 已被释放。”

控制器

    private hcEntities db = new hcEntities();

 // GET: Chains
 public ActionResult Index()
{
    ViewData["chain_name"] = new SelectList(db.chains, "code", "name");
    return View(db.chains.ToList());
}

//Action Function callby javascript
[HttpPost]
public ActionResult Action(string code)
{
    using (var ObjDb = new hcEntities())
    {
        var query = from c in ObjDb.chains
            where c.code == code
            select c;
        return Json(query);//Return Json Result
    }
}

查看:-

<script type="text/javascript">
function Action(code) {
$.ajax({
    url: '@Url.Action("Action", "Chains")',
    type: "POST",
    data: { "code": code },
    "success": function (data) {
        if (data != null) {
            var vdata = data;
            $("#ChainName").val(vdata[0].name);
            $("#ChainCode").val(vdata[0].code);
            $("#username").val(vdata[0].username);
        }
    }
});
}

【问题讨论】:

  • 试试return Json(query.ToList());
  • 我已经使用了它,它得到了异常“EntityFramework.dll中发生'System.InvalidOperationException'类型的异常,但未在用户代码中处理”
  • 只是为了测试,在这一行去掉 using 和重用你的 class 级别的 dbcontext var query = from c in db.chains
  • 当我使用类级别对象时,我得到了这个stackoverflow.com/questions/26092390/mvc5-mqsql-issue
  • 好的,我想确保您只有一个 dbcontext,那么您可以删除一级类并在所有控制器方法中添加using (var db = new hcEntities()) 吗?

标签: mysql entity-framework asp.net-mvc-5


【解决方案1】:

试试return Json(query.FirstOrDefault());

【讨论】:

    【解决方案2】:

    在 GET 控制器中再次使用 IDisposable

     // GET: Chains
    public ActionResult Index()
    {
        using (var ObjDb = new hcEntities())
        {
           ViewData["chain_name"] = new SelectList(ObjDb.chains, "code", "name");
           return View(ObjDb.chains.ToList());
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 2015-04-03
      • 2015-08-09
      • 1970-01-01
      相关资源
      最近更新 更多