私はDapperでそれを使用している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
いるcannot read while the reader is closed
という例外cannot read while the reader is closed
。
私はusing statement
使用しているので、それは知っているので、 multi variable
後、接続が自動的に閉じられるので、私は何も読むことができません..
これをどうすれば解決できますか?
あなたの答えは非常に感謝して
ありがとう
接続を閉じる前に接続を読み取ろうとしています。それは動作しません。
私はこのように試してみることをお勧めします:
using (var connection = new SqlConnection(ConfigurationManager.AppSettings["MyConnection"]))
using (var result = connection.QueryMultiple("GetMemberDetails", commandType: CommandType.StoredProcedure))
{
//... Consume
}