2017-08-27 66 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

相关问题