2017-08-27 113 views
0

我已經在Helper類以下的方法,我使用它精緻小巧稱爲後查詢多個:無法讀取的短小精悍

Helper.cs:

public SqlMapper.GridReader MQueries(string spName, object dynamicParams) 
{ 
    using (IDbConnection conn = new SqlConnection(ConfigurationManager.AppSettings["MyConnection"])) 
    { 
    conn.Open(); 

    return conn.QueryMultiple(spName, dynamicParams, commandType: CommandType.StoredProcedure); 
    } 
} 

我打電話從以上稱爲DataAccess另一類方法:

DataAccess.cs:

public Member GetMemberDetails(Member member) 
{ 
    var multi = Helper.MQueries("GetMemberDetails", member); 
    var member = multi.Read<Member>().Single(); 
    var memberStatus = multi.Read<MemberStatus>().Single(); 
    var memberContact = multi.Read<MemberContact>().ToList(); 
    var memberFinancial = multi.Read<MemberFinancial>().ToList(); 

    member.MemberStatus = memberStatus; 
    member.MemberContact = memberContact; 
    member.MemberFinancial = memberFinancial; 

    return member; 
} 

但是,multi variable有數據,但是一旦我想分開它並映射到另一個變量,我得到了名爲cannot read while the reader is closed的異常。

我知道那是因爲我使用的using statement,所以multi variable後,連接得到自動關閉,所以我不能讀什麼..

我怎樣才能解決這個問題?

你的答案大加讚賞

感謝

+0

你應該簡單地從輔助方法返回的數據集,而不是讀者。我不確切知道哪個API返回數據集,但我想你可以找到這個 – ibubi

回答

0

的連接嘗試讀取它之前是越來越封閉。這是行不通的。

我會建議嘗試這樣的:

using (var connection = new SqlConnection(ConfigurationManager.AppSettings["MyConnection"])) 
using (var result = connection.QueryMultiple("GetMemberDetails", commandType: CommandType.StoredProcedure)) 
{ 
    //... Consume 
} 
+0

嗨,如果我喜歡你在'Helper'類中提到的那個,我怎樣才能得到'Read'呢?難道當我試圖嘗試「閱讀」時,我會再次遇到同樣的錯誤?謝謝 – Natsuki

+0

我已經提到了在DataAccess類中使用的代碼 –

+0

明白了。謝謝,讓我檢查是否有其他方法來完成此操作,而不是數據訪問類中的連接和查詢 – Natsuki

相關問題