我已经为Dapper ORM创建了以下存储库方法。
public SqlMapper.GridReader QueryMultiple(string query, object cmdParams = null, CommandType cmdType = CommandType.Text)
{
SqlMapper.GridReader objMulti;
var conn = GetSqlConnection();
objMulti = conn.QueryMultiple(query, cmdParams, commandTimeout: 0, commandType: cmdType);
return objMulti;
}
public IEnumerable<T> GetAll<T>(string query, object cmdParams = null, CommandType cmdType = CommandType.Text) where T : class
{
IEnumerable<T> objList;
using (var conn = GetSqlConnection())
{
objList = conn.Query<T>(query, param: cmdParams, commandTimeout:0, commandType: cmdType);
conn.Close();
}
return objList;
}
查询方法的用法看起来不错,并且在操作完成后立即关闭连接。
new DapperRepository().Query("zyx").ToList();
但是querymultiple返回gridreader。因此,在完成读取操作后,Dapper是否同时处理连接和读取器。请告知我的方法。
using (SqlMapper.GridReader multiResult = new DapperRepository().QueryMultiple(sql, new { id = id }))
{
var dbPRTGroup = multiResult.Read<Customer>().Single();
XXXXX
}
最佳答案
是的,它确实。
根据您的最后一个代码块,连接和读取器操作都放在最后。还可以通过在.NET Framework中使用using
关键字来确保这一点。
关于c# - Dapper ORM的实用程序类,类似于存储库模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12519898/