2017-08-16 1 views
1

Ich bekomme die "Die ObjectContext-Instanz wurde entfernt und kann nicht mehr für Operationen verwendet werden, die eine Verbindung benötigen" Fehlermeldung in meiner Intranet-App, wenn ich versuche, eine zu implementieren jQuery DataTable für eine relationale SQL-Datenbank.Lazy-loading Problem bei der Implementierung von jQuery DataTable

Das ist mein Homecontroller-Code:

using CyberAssets.Models; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace CyberAssets.Controllers 
{ 
    public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      return View(); 
     } 

     public ActionResult loaddata() 
     { 
      using (CyberAssetsEntities dc = new CyberAssetsEntities()) 
      { 
       var data = dc.CyberAssets.OrderBy(a => a.Id).ToList(); 
       return Json(new { data = data }, JsonRequestBehavior.AllowGet); 
      } 
     } 
    } 
} 

Dies ist der Code für meine Ansicht mit der Datatable:

@section Scripts { 
<script src="//cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script> 
<script> 
    $(document).ready(function() { 
     $('#DataTbl').DataTable({ 
      "ajax": { 
       "url": "/Home/loaddata", 
       "type": "GET", 
       "datatype": "json" 
      }, 
      "columns": [ 
       { "data": "FacilityName", "autowidth": true }, 
       { "data": "FacilityType", "autowidth": true }, 
       { "data": "MachineType", "autowidth": true }, 
       { "data": "MachineFunctionDesc", "autowidth": true }, 
       { "data": "PhysicalLocation", "autowidth": true } 
      ] 
     }); 
    }); 
</script> 
} 

Wie kann ich die Objekte Vorspannung, die ich innerhalb der loaddata() verweisen müssen using Block in meinem HomeController und im Grunde "vermeiden" Lazy-Loading?

Antwort

1

Sie müssen folgende Zeilen zu Ihrer Datatable Initialisierungscode hinzuzufügen:

 "processing": true, 
     "serverSide": true, 

So Sie Code für Datatable sollte wie folgt aussehen:

$('#DataTbl').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": { 
      "url": "/Home/loaddata", 
      "type": "GET", 
      "datatype": "json" 
     }, 
     "columns": [ 
      { "data": "FacilityName", "autowidth": true }, 
      { "data": "FacilityType", "autowidth": true }, 
      { "data": "MachineType", "autowidth": true }, 
      { "data": "MachineFunctionDesc", "autowidth": true }, 
      { "data": "PhysicalLocation", "autowidth": true } 
     ] 
    }); 
+0

Schien nicht den Trick zu tun. Immer noch die gleiche Fehlermeldung. – ScopeY

+0

@ScopeY Nun, es sieht so aus, als wäre Ihr EntityFramework-Datenbankkontextobjekt entfernt worden. Welche Zeile in Ihrem Code erzeugt den Fehler? – fatherOfWine

+0

Ich habe es tatsächlich geschafft, den Fehler zu beheben. Nur ein kleines zwickendes Ding. Ich weiß deine Hilfe zu schätzen. – ScopeY

Verwandte Themen