【问题标题】:Returning a list from a Dapper stored procedure从 Dapper 存储过程返回列表
【发布时间】:2014-02-11 01:44:21
【问题描述】:

我有一个简洁的方法,我想存储一个类。

        using (var block = new TransactionBlock())
        {
            const string sql =
                "select * from Messages where statusId not in ('5','6')";
            var results = TransactionBlock.Connection.Query<OpenMessages>
            (sql,TransactionBlock.Transaction).ToList();
            block.Commit();
            return results;
        }

所以,OpenMessages 是:

   public class OpenMessages
   {
      public List<string> MessageId { get; set; }
   }

正在返回以下错误:

System.InvalidOperationException 未被用户代码处理 H结果=-2146233079 Message=ExecuteReader 要求该命令在连接分配给 该命令处于待处理的本地事务中。该命令的 Transaction 属性没有 已初始化。

我还有其他几种方法都可以正常工作,只是不是我需要返回列表的方法。

【问题讨论】:

    标签: c# dapper


    【解决方案1】:

    您将交易作为参数传入。命名:

    var results = TransactionBlock.Connection.Query<OpenMessages>
            (sql,
       transaction: TransactionBlock.Transaction).ToList();
    

    另外,如果它确实是一个存储过程,您可能想要添加:

    commandType: CommandType.StoredProcedure
    

    【讨论】:

    • 嗨,Marc,是的,你说得对,完整的版本是 SP,内联 SQL 字符串是为了尝试说明正在发生的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2022-07-29
    • 2017-08-24
    • 1970-01-01
    • 2013-06-21
    • 2022-01-19
    相关资源
    最近更新 更多