1

我在这里挠头。我有一个引导模式,它有一个用于输入 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);

但是当我不知道或不知道这些列时,这对我没有帮助。我什至尝试了使用 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);

但是当我想执行查询时该怎么办?

context.Database.SqlQuery(data.GetType()??, query);

即使我确实放入了 data.GetType() 它也会返回空对象。

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

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

有什么想法/建议吗?

4

1 回答 1

2

Entity Framework populates a model based on the type specified. You'll need to use something else or go old school with a DataReader.

于 2015-04-11T07:56:52.420 回答