J'ai la méthode suivante dans la classe Helper
que je l'utilise avec Dapper:
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);
}
}
Et j'appelle la méthode ci-dessus d'une autre classe appelée 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;
}
Cependant, la multi variable
a les données, mais une fois que je veux les séparer et les mapper dans une autre variable, j'ai eu l'exception appelée cannot read while the reader is closed
.
Je sais que c'est parce que je suis utilisé la using statement
, donc après la multi variable
, la connexion se ferme automatiquement, donc je ne peux rien lire ..
Comment puis-je resoudre ceci?
Votre réponse très appréciée
Merci
La connexion se ferme avant que vous essayiez de le lire. Cela ne marchera pas.
Je suggère d'essayer comme ceci:
using (var connection = new SqlConnection(ConfigurationManager.AppSettings["MyConnection"]))
using (var result = connection.QueryMultiple("GetMemberDetails", commandType: CommandType.StoredProcedure))
{
//... Consume
}