2017-07-28 65 views
0

我知道這種查詢有很多解決方案,但我無法實現它們中的任何一個。使用實體框架在MVC中獲取動態表名稱

我將表名稱傳遞給我的函數,並希望EF獲取傳遞的相應表值的表結果。

所以這是我的函數(JsonResult)的控制器: -

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

    using (EBContext db = new EBContext()) 
    { 
     try 
     { 
      var EduTblList = db.(**MyTableName**).ToList(); // want to implement it here. 
     } 
     catch (Exception ex) 
     { 
      string innerMessage = (ex.InnerException != null) ? ex.InnerException.Message : ""; 
     } 

     return new JsonResult { Data = EduTblList, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
    } 
} 

我怎麼能做到這一點沒有太多的代碼修改,最簡單的方法使用EF或LINQ? 請幫助

+1

簡單,無需修改:https://stackoverflow.com/questions/31033055/dynamic-table-names-in-entity-framework-linq – Spectarion

+0

可能的複製[Entity Framework linq中的動態表名](https://stackoverflow.com/questions/31033055/dynamic-table-names-in-entity-framework-linq) –

+0

'var EduTblList = db.Set(typeof(EBContext) .Assembly.GetTypes()。其中​​(x => x.Name == MyTableName).First())。ToList();'在類名稱的情況下與表名相同。 –

回答

0

嘗試下面的代碼:

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

     using (EBContext db = new EBContext()) 
     { 
      try 
      { 
      Type tableType; 
       switch(MyTableName) 
       { 
       case "MyTableName": 
        tableType= typeof(TableEntityName); 
        break; 
       } 
       var dbquery = context.Set(tableType); 
       var EduTblList = result.ToList(); // want to implement it here. 
      } 
      catch (Exception ex) 
      { 
       string innerMessage = (ex.InnerException != null) ? ex.InnerException.Message : ""; 
      } 

      return new JsonResult { Data = EduTblList, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
     } 
    } 
+0

無法理解此代碼: - var dbquery = context.Set(tableType); var EduTblList = result.ToList(); //想在這裏實現它。 – Deepak