2012-04-14 1 views
1

내 응용 프로그램이 C# .Net로 코딩 된 Asp.net MVC3에 있습니다. DropDownList가있는보기가 있습니다.이 드롭 다운 목록에는 내 데이터베이스에있는 모든 테이블의 이름이 있습니다. 내 요구 사항은 사용자가 드롭 다운 목록에서 특정 표를 선택한 다음 Json에서 아래 표와 같이 표의 이름을 Json 메서드로 전달할 때입니다.LINQ 또는 Entity SQL 쿼리를 작성하여 런타임에 테이블 이름을 얻는 테이블에서 레코드를 얻는 방법

$("#MyTableNames").change(function() {           
    $("#MyDiv").load("/../MyController/MyActionMethod", { TableName:$("#MyTableNames").val() }, function() { 
    }); 
}); 

위의 내용은 내 테이블 이름을 컨트롤러의 내 액션에 전달하는 방법입니다. 여기까지 모두 괜찮습니다. 다음은 나의 행동 강령입니다. 나는 쿼리를 작성하는 두 가지 방법을 시도했다 ... 그것은 Entity SQL을 포함한다. LINQ does not는 이것을 지원하지 않는다.

//First Method 


    public ActionResult MyAction(string TableName) 
      { 

     var model = db.ExecuteStoreQuery<TableName>("Select * from " + TableName + "  where Delete_Flag='" + false + "'"); 
ViewBag.MyData=model; 
       return PartialView(); 
      } 

//Second Method 


    public ActionResult GetRecords(string TableName) 
      { 
      var sql = "SELECT VALUE emp FROM " + TableName + " AS emp "; 
      var query = db.CreateQuery <TableName>(sql); 
      Viewbag.MyData=query;  
      return PartialView(); 
      } 

그러나 <로 일하고 위의 방법> 중 어느 것도 테이블로 매개 변수를 싶지 ... 나는 내가보기에 그것을 채울 수 있도록 VierwBag에 쿼리의 결과를 전달합니다. 어떻게 이것을 달성 할 수 있는지 제안하십시오.

답변

1

디자인 타임에 사용할 형식을 알 수 없으므로 강력한 형식의 제네릭을 사용하기가 어려울 수 있습니다.

다른 접근법은 데이터를 쿼리하기 위해 Massive과 같은 마이크로 ORM 프레임 워크와 함께 ExpandoObject \ dynamic을 사용하는 것입니다. 이 경우 리턴되는 데이터는 ExpandoObject이며, 필요한 경우 클라이언트로 다시 리턴 될 수 있습니다.

관련 문제