将Dapper结果转换为弱类型对象以用于Kendo网格?

时间:2014-06-06 23:43:24

标签: c# json kendo-grid dapper

不确定这是否是我正在寻找的正确术语,但这是我的问题。

我基本上创建了一个动态查询构建器并使用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网格。

0 个答案:

没有答案