/// <summary> /// Méthode pour retourner un objet dto à partir du sqldatareader du résultat de la proc /// </summary> /// <typeparam name="T"></typeparam> /// <param name="command"></param> /// <returns></returns> protected static T GetSingleDTO <T>(ref SqlCommand command) where T : DTOBase { T dto = null; try { command.Connection.Open(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { reader.Read(); DTOParser parser = DTOParserFactory.GetParser(typeof(T)); parser.PopulateOrdinals(reader); dto = (T)parser.PopulateDTO(reader); reader.Close(); } else { // S'il n'y a pas de données, nous renvoyons null. dto = null; } } catch (Exception e) { throw new Exception("Error populating data", e); } finally { command.Connection.Close(); command.Connection.Dispose(); } // Renvoie le DTO, rempli soit avec des données soit avec null. return(dto); }
/// <summary> /// Méthode pour retourner une liste de dto à partir du sqldatareader du résultat de la proc /// </summary> /// <typeparam name="T"></typeparam> /// <param name="command"></param> /// <returns></returns> protected static List <T> GetDTOList <T>(ref SqlCommand command) where T : DTOBase { List <T> dtoList = new List <T>(); try { command.Connection.Open(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { // Obtenir un analyseur (parser) pour ce type de DTO et remplir les ordinaux. DTOParser parser = DTOParserFactory.GetParser(typeof(T)); parser.PopulateOrdinals(reader); // Utilise l'analyseur (parser) pour construire notre liste de DTO. while (reader.Read()) { T dto = null; dto = (T)parser.PopulateDTO(reader); dtoList.Add(dto); } reader.Close(); } else { // S'il n'y a pas de données, nous renvoyons null. dtoList = null; } } catch (Exception e) { throw new Exception("Error populating data", e); } finally { command.Connection.Close(); command.Connection.Dispose(); } return(dtoList); }