2014-09-29 37 views
0

從實體框架中的數據庫更新模型之後。 Json數據不會填充到文本框中。當我使用DeveloperTool時,我發現一個錯誤「已經有一個與此連接相關的打開的DataReader必須先關閉。」[錯誤505]幫我解決這個問題。在我的項目中使用MySql。當我在模型中只使用一個表時,我沒有得到任何錯誤,但是當我更新模型時,我的項目不工作。如果我在模型中添加所有表格,那麼我面臨同樣的問題。MVC5 Mqsql問題

這裏是我的代碼

控制器: -

// 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) 
{ 
    var query = from c in db.chains 
       where c.code == code 
       select c; 

    return Json(query);//Return Json Result 
} 

查看: -

@using (@Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 
    <div class="form-horizontal"> 
     <hr /> 
     <div class="form-group"> 
      <label class="col-sm-2 control-label"> 
       Select Chain 
      </label> 
      <div class="col-md-3"> 
       @Html.DropDownList("ddlchainname", (SelectList)ViewData["chain_name"], new {   onchange = "Action(this.value);", @class = "form-control" }) 
      </div> 
     </div> 
     <div class="form-group"> 
    <label class="col-sm-2 control-label"> 
     Chain Name 
    </label> 
    <div class="col-md-3"> 
     @Html.TextBox("ChainName", null, new { @class = "form-control" }) 
    </div> 
    <label class="col-sm-2 control-label"> 
     Username 
    </label> 
    <div class="col-md-3"> 
     @Html.TextBox("username", null, new { @class = "form-control" }) 
      </div> 
</div> 
<div class="form-group"> 
    <label class="col-sm-2 control-label"> 
     Chain Code 
    </label> 
    <div class="col-md-3"> 
     @Html.TextBox("ChainCode", null, new { @class = "form-control" }) 
    </div> 
</div> 
    </div> 
} 

<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); 
     } 
    } 
}); 

}

回答

0

試試這個辦法:

using (var db = new ChainEntities()) 
{ 
    ViewData["chain_name"] = new SelectList(db.chains, "code", "name"); 

    return View(db.chains.ToList()); 
} 

這樣你只能打開一次連接,然後在完成後進行處理。

理智的行動:

[HttpPost] 
public ActionResult Action(string code) 
{ 

    using (var db = new ChainEntities()) 
    { 
     var query = from c in db.chains 
        where c.code == code 
        select c; 

     return Json(query);//Return Json Result 
    } 

} 
+0

基本問題action()方法中,我實現你在行動()方法的代碼,但它產生後「的操作不能因爲的DbContext已經佈置完成。 「我如何解決這個問題。 – Anjyr 2014-09-29 05:42:12

+0

@Anjyr做同樣的行動,看我的編輯 – meda 2014-09-29 12:27:18

+0

讓我知道如果你需要更多的幫助 – meda 2014-09-29 12:41:07