将 dapper.net 的存储过程输出转换为列表

问题描述 投票:0回答:1

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

我有一个模型类

StoredProcedureResult
,与存储过程的输出相关。

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>
.

谢谢

c# dapper
1个回答
9
投票

调用Query时需要指定数据的返回类型。

  • 您拥有 <模型名称> 的位置就是您放置预期返回类型的位置 - .
  • 在您的示例中,您正在以 dapper 的内部动态 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();
© www.soinside.com 2019 - 2024. All rights reserved.