将存储过程输出从dapper.net转换为List

时间:2017-01-17 07:25:02

标签: c# dapper

我是Dapper.net的新手,我正在尝试使用Dapper.Net执行存储过程。

我有一个模型类StoreProcedureResult,它与存储过程的输出相关。

public StoredProcedureResult
{
    public string Name { get; set; }
    public string Address { get; set; }
    public string PhoneNumber { get; set; }
}

conn.Query(SP_name, Param(s), Type). 

动态检索模型的输出。

执行后我得到以下

{{Dapper,Name='Pradeep',Address='UK',PhoneNumber='+4478923984'}}
{{Dapper,Name='Jack',Address='USA',PhoneNumber='+447242344234}}
{{Dapper,Name='Ram',Address='UK',PhoneNumber='+447892423484'}}

我需要转换List<StoredProcedureResult>结构中的动态输出。

经过几次搜索,我发现了这段代码

conn.Query<*Model_name*>(SP_name, Param(s), Type). 

不幸的是,这会返回正确的行数,但行是空的。如何将输出转换为List<StoredProcedureResult>

由于

1 个答案:

答案 0 :(得分:4)

调用Query时,需要指定数据的返回类型。你在哪里&lt; 模型名称&gt;是您预期返回类型的地方 - 。在您的示例中,您将数据恢复到精巧的内部动态dapperrow类型

        // Gets results in dapper's DapperRow type. This is what you're getting now. 
        var results = _connection.Query("SP_name", commandType: CommandType.StoredProcedure);

下面的示例显示了在您的命名类型中返回结果,这是您真正想要的。

        //Gets results in your type. Note we tell dapper we want it turned into StoredProcedureResults.
        List<StoredProcedureResult> castResults;
        castResults = _connection.Query<StoredProcedureResult>("SP_name", commandType: CommandType.StoredProcedure).ToList();