在代码第一种方法中,我希望
static void Main()
{
var sprocName = "sprocTesting";
var db = new EntityContext();
var result = db.Database.SqlQuery<object>(sprocName).ToList();
var json = JsonConvert.SerializeObject(result);
}
在这种特殊情况下,我将无法让一个班级将其归还,我能做的最好的就是Object
。
这会运行,但result
的输出只不过是{object}
的列表。序列化的json只不过是一堆空括号
[{},{},{}....{}]
计数符合我对此存储过程的预期(5,228个结果)。
我想做什么甚至可行,或者我只是错过了什么?
我应该提一下,如果我创建一个类来转储它,那么它工作正常。但这只是存储过程名称将从另一个表传入的一个示例,因此我无法为每个可能的结果集构建一个类,因此需要泛型。
答案 0 :(得分:0)
这是不可能的。您需要一个用于序列化的类才能工作,并且您需要一个ORM类来将返回的查询值映射到。
如果要在没有具体类定义的情况下执行此操作,则必须编写自定义代码以确定返回的结果集结构,将结果集读入内存,然后确定如何将内存结果集中的序列化为JSON。
答案 1 :(得分:0)
您使用的是哪个版本的SQL?
如果您有SQL 2016,可以使用 for JSON path 子句轻松完成此操作;