不确定这是否是我正在寻找的正确术语,但这是我的问题。
我基本上创建了一个动态查询构建器并使用Dapper来查询我的数据库,这工作正常。首先,我将结果映射到一个类,例如MyClass
。
//for example, let's say my query was:
var query = "select A, B, C from MyTable";
connection.Query<MyClass>(query)
//Mapping to:
public class MyClass
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
public string D { get; set; }
}
Dapper将映射我的结果,并且用户未在查询中提供的任何列都将被视为NULL(在本例中为&#34; D&#34;)。然后我使用结果来填充一个Kendo网格(这是在视图上动态完成的,没有问题)。
public ActionResult GetResults([DataSourceRequest]DataSourceRequest request, string accountId, string templateId)
{
var results = _repo.GetResults(accountId, Convert.ToInt32(templateId));
return Json(results.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
我想做什么(如果可能),而不是将结果映射到MyClass
,我可以使用从查询中提供的列创建的动态属性动态创建对象吗?这样我就不必创建要映射的对象中所有可能列的超集。
//something like
[
{
"A" : "John",
"B" : "Smith",
"C" : "A312"
},
{
"A" : "Mark",
"B" : "Price",
"C" : "B784"
}
]
我已经尝试将对象转换为JSON,并将记录单独转换为JSON,但我无法使格式正确,以便它可以成为DataSourceResult
以用于Kendo网格。