2012-09-20 36 views
2

我已經爲Dapper ORM創建了以下存儲庫方法。類似於存儲庫模式的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 
} 

回答

0

是的,它的確如此。

根據您的上一個代碼塊,連接和閱讀器操作都在末尾。這也可以通過在.NET Framework中使用using關鍵字來保證。

+1

但他不能使用交易範圍.. – GorillaApe