如何通过在 MVC5 中动态传递多个列名来获取记录 Asp.net



想要通过使用实体框架传递表名和多个列名来从数据库获取记录

到目前为止我已经尝试过...

 public List<string> GetRecords(List<string> Columns,string tablename)
    {
        using (var Context = new MCPEntities())
        {
             string columnnames = string.Join(",", Columns);
            var Records = Context.Database.SqlQuery<string>("SELECT " + columnnames + " FROM " + tablename + " ").ToList();
            return Records.ToList();
        }
    }

我得到的错误

数据读取器具有多个字段。多个字段对 EDM 基元或枚举类型无效

尝试

var res = dbContext.Database.SqlQuery<TestEntity>("Select * from dbo.MyView").ToList();

有了这个,再试一次...

var res = dbContext.Database.SqlQuery("Select * from dbo.MyView").ToList<TestEntity>();

如果仍然不起作用,那么您需要检查您的

测试实体和你的

德博。我的视图对于相同的列。因为如果MyView和TestEntity中有不同的列,那么它将不起作用...

如果您在查询中更改列名,那么它将引发异常或无法正常工作......

如果这对您有帮助,那么不要忘记标记...

通过你给出的它应该工作,你得到什么错误。

正如我的建议,首先将查询放在单独的变量中,然后使用 Visual Studio 中的断点检查查询是否已正确形成,然后传递该查询以执行。它肯定会起作用。

例:

public List<string> GetRecords(List<string> Columns,string tablename)
{
    using (var Context = new MCPEntities())
    {
         string columnnames = string.Join(",", Columns);
        //check the below line in breakpoint to see the query formation
        string formedquery = "SELECT " +   columnnames + " FROM " + tablename + ""
     var Records = Context.Database.SqlQuery<string>(formedquery).ToList();
        return Records.ToList();
    }
}

最新更新