【问题标题】:Convert stored procedure output from dapper.net into List将 dapper.net 的存储过程输出转换为 List
【发布时间】:2017-01-17 07:25:02
【问题描述】:

我是 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&lt;StoredProcedureResult&gt;

谢谢

【问题讨论】:

  • 这是一个关于dapper的问题。删除了不相关的标签 Sql-server 和存储过程。
  • 您的过程调用中是否有任何输出?感觉问题在于您没有返回任何行,否则使用输出创建列表应该不是问题。
  • 我从 SSMS 执行了 SP,我从中得到了结果。当我从 Dapper 执行相同的 SP 时,我得到上面提到的输出({{Dapperrow... 在上面)。但是,当我尝试添加模型而不是动态时,我无法在行中捕获和赋值。我正在尝试将 SP 输出转换为 List 或类似的东西。

标签: c# dapper


【解决方案1】:

调用查询时需要指定数据的返回类型。你有 Model Name> 的地方是你放置预期返回类型的地方 - 。在您的示例中,您正在以 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();

【讨论】:

  • 谢谢 G 戴维森。它起作用了,我能够得到我定义的模型输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 2010-10-23
  • 2013-06-18
  • 1970-01-01
相关资源
最近更新 更多