如何创建 LINQ 或实体 SQL 查询以从运行时实现表名的表中获取记录



我的应用程序在用C#.Net编码的MVC3 Asp.net。我有一个视图,其中包含一个下拉列表。此下拉列表具有数据库中存在的所有表的名称。我的要求是当用户从下拉列表中选择一个特定的表,然后通过 Json 将表的名称传递给 Json 方法,如下面的代码所示。

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

以上是我将表名传递给控制器中的操作的方式。直到这里一切都很好。以下是我的行动守则。我尝试了两种方法来编写查询...它还包括实体 SQL。没有 LINQ,因为 LINQ 不支持这一点。

 //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,以便我可以在视图中填充它。建议我如何实现这一目标。

由于您不知道在设计时要使用的类型,因此很难使用强类型泛型。

另一种方法是将ExpandoObject\dynamic与micro ORM框架(如Massive )一起使用来查询数据。在这种情况下返回的数据是一个 ExpandoObject,如果需要,可以将其返回给客户端。

最新更新