2017-07-30 55 views
1

我的控制器代碼是: -由於已處理DbContext,操作無法完成。要返回選擇的表值

public JsonResult FetchTblData() 
    { 
     string MyTableName = Convert.ToString(Request.Form["TblName"]); 

     using (EBContext db = new EBContext()) 
     { 
      try 
      { 
       Type tableType = typeof(CourseDesc); 
       switch (MyTableName) 
       { 
        case "CourseTbl": 
         tableType = typeof(CourseTbl); 
         break; 
        case "CourseDescTbl": 
         tableType = typeof(CourseDesc); 
         break; 
       } 

       var result = db.Set(tableType); 

       return new JsonResult { Data = result, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
      } 
      catch (Exception ex) 
      { 
       string innerMessage = (ex.InnerException != null) ? ex.InnerException.Message : ""; 
       return new JsonResult { Data = "Not Found", JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
      } 

     } 
    } 

我看着在這個問題還有: - [操作無法完成,因爲的DbContext已配置] [1]

[1]:The operation cannot be completed because the DbContext has been disposed等,但方法是完全不同的。我想在我的jsonresult中有我的表值。但我無法通過變量'result'來訪問它。請原諒我的英語。

+0

你回來'result'變量自IEnumerable繼承似乎並沒有持有價值,而是準備操作,它不再可以通過它指向的'DbContext'來執行,因爲'DbContext'在調用'return'後就會被處理掉,這發生在.NET試圖將'result'串行化成JSON之前。改變你的行'var result = db.Set(tableType);''var result = db.Set(tableType).ToListAsync();' –

+0

給我錯誤: - ObjectContext實例已經被處置,不能再使用用於需要連接的操作。 – Deepak

+0

嘗試'result = db.Set ();' –

回答

0
db.Set(tableType); 

不是集合。這是一個查詢。如果要執行查詢,然後運行

 var results = new List<object>(); 
     foreach (var item in db.Set(tableType)) 
     { 
      results.Add(item); 
     } 
+0

它返回: - dbset不包含'tolist'的定義,並且沒有擴展方法'ToList'接受可以找到類型'DbSet'的第一個參數。 – Deepak

+0

您是否導入了System.Linq命名空間?這是一種擴展方法。 https://msdn.microsoft.com/en-us/library/bb342261(v=vs.110).aspx –

+0

是的,它已經做到了。 – Deepak

0

試着這麼做:

public JsonResult FetchTblData() 
    { 

     string MyTableName = Convert.ToString(Request.Form["TblName"]); 

     DbContext result; 

     try 
     { 
      Type tableType = typeof(CourseDesc); 
      switch (MyTableName) 
      { 
       case "CourseTbl": 
        tableType = typeof(CourseTbl); 
        break; 
       case "CourseDescTbl": 
        tableType = typeof(CourseDesc); 
        break; 
      } 


      using (EBContext db = new EBContext()) 
      { 
       result = db.Set(tableType); 
      } 

      return new JsonResult { Data = result, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
     } 
     catch (Exception ex) 
     { 
      string innerMessage = (ex.InnerException != null) ? ex.InnerException.Message : ""; 
      return new JsonResult { Data = "Not Found", JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
     } 
    } 
+0

這是什麼: - I_DO_KNOW_TYPE_FOR_SET結果?? – Deepak

+0

我的意思是:我不知道類型 –

+0

也許:DbContext結果; –

相關問題