/// <summary> /// Récupération d'une liste d'objets d'un certain type correspondant à un critère donnée. /// </summary> /// <param name="collection">Collection à charger.</param> /// <param name="commandName">Nom de la commande.</param> /// <param name="queryParameter">Paramètres de tri et de limite (vide par défaut).</param> /// <param name="criteria">Map de critères auquelle la recherche doit correpondre.</param> /// <returns>Collection.</returns> private ICollection <T> InternalLoadAll(ICollection <T> collection, string commandName, QueryParameter queryParameter, FilterCriteria criteria) { int maxRows = BrokerManager.NoLimit; if (queryParameter != null) { // Définition du tri à partir de la requete. queryParameter.RemapSortColumn(typeof(T)); // Definition du maxRows maxRows = GetMaxRowCount(queryParameter.MaxRows); } IReadCommand cmd = this.GetCommand(commandName, _definition.ContractName, criteria, maxRows, queryParameter); ICollection <T> coll = CollectionBuilder <T> .ParseCommand(collection, cmd); long collCount = coll.Count; if (queryParameter != null && (queryParameter.Offset > 0 || queryParameter.Limit > 0)) { collCount = QueryContext.InlineCount.Value; } if (maxRows > BrokerManager.NoLimit && collCount > maxRows) { throw new BrokerException("Store return too many rows."); } return(coll); }