2014-02-10 152 views
2

我有一個精簡方法,我想存儲一個類。從Dapper存儲過程返回列表

 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了未處理的用戶代碼的HResult = -2146233079 消息= ExecuteReader需要的命令在分配給 命令的連接處於未決本地事務中時進行事務處理。該命令的Transaction屬性尚未初始化爲 。

我有幾個其他的方法,工作正常,只是不是我需要返回一個列表。

回答

4

您正在傳遞交易作爲參數。將它命名爲:

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

而且,如果它真的是一個存儲過程,你可能要添加:

commandType: CommandType.StoredProcedure 
+0

嗨馬克,是你的權利,完整的版本是一個SP,內聯SQL字符串被試圖說明發生了什麼。 – CSharpNewBee