Sql server 使用实体框架的原始Sql查询的动态实体

Sql server 使用实体框架的原始Sql查询的动态实体,sql-server,entity-framework,model-view-controller,dynamictype,dynamic-properties,Sql Server,Entity Framework,Model View Controller,Dynamictype,Dynamic Properties,我在这里挠头。我有一个引导模式,它有一个用于输入sql查询的字段。我传递的查询使用对控制器的AJAX调用,并使用下面的代码执行sql查询,并返回一个JSON对象。大概是这样的: context.Database.SqlQuery(typeof(object), query); public class CusType { public CusType(){} public int Id { get; set; } public string Name { get; se

我在这里挠头。我有一个引导模式,它有一个用于输入sql查询的字段。我传递的查询使用对控制器的AJAX调用,并使用下面的代码执行sql查询,并返回一个JSON对象。大概是这样的:

context.Database.SqlQuery(typeof(object), query);
public class CusType {
    public CusType(){}
    public int Id { get; set; }
    public string Name { get; set; }
}
context.Database.SqlQuery(typeof(CusType), query);
但我得到的都是空的东西。当我不知道列时,我无法传递类型。例如,我可以这样做:

context.Database.SqlQuery(typeof(object), query);
public class CusType {
    public CusType(){}
    public int Id { get; set; }
    public string Name { get; set; }
}
context.Database.SqlQuery(typeof(CusType), query);
然后像这样做:

context.Database.SqlQuery(typeof(object), query);
public class CusType {
    public CusType(){}
    public int Id { get; set; }
    public string Name { get; set; }
}
context.Database.SqlQuery(typeof(CusType), query);
但当我不知道或不知道专栏时,这对我没有帮助。我甚至尝试了一个使用ExpandoObjects的想法。例如:

List<string> columns = new List<string>();
string tmpCol = query;
string[] seperator = new string[] { "from" };
tmpCol = query.ToLower()
    .Replace(@"\s+", "")
    .Replace("select", "");
tmpCol = tmpCol.Split(seperator, 1, StringSplitOptions.RemoveEmptyEntries)[0];
for (int i = 0; i < tmpCol.Split(',').Length; i++)
{
    columns.Add(tmpCol.Split(',')[i]);
}
dynamic data = new ExpandoObject();
IDictionary<string, object> props = (IDictionary<string, object>)data;
foreach (var column in columns)
{
    props.Add(column.ToString(), column.ToString());
}

return context.Database.SqlQuery(data.GetType(), query);
即使在我输入data.GetType()时,它也会返回空对象

在这两个示例中(使用typeof(object)和typeof(data.GetType()),我都返回了这个JSON对象:

[{},{},{},{},{},{},{},{},{},{},{},{},{}]

有什么想法/建议吗?

实体框架会根据指定的类型填充模型。您需要使用其他工具或使用数据读取器。好吧,我不是项目经理,所以我不会做出决定。不过,感谢您的建议。我一定会看一看。这基本上是我必须做的。谢谢。“编辑”无法更新您的评论,因为我没有足够的声誉。