/// <summary> /// Gets one or more entities from the database by key. /// </summary> /// <param name="keys">An enumerable of key values</param> public IEnumerable <TEntity> Get(IEnumerable <TKey> keys) { if (keys == null || !keys.Any()) { throw new ArgumentException("Keys must not be null or an empty enumerable."); } var results = new List <TEntity>(); var parameters = new DynamicParameters(); parameters.Add("keys", keys); IEnumerable <TEntity> entities; var connection = GetConnection(); try { var keyParamName = _queryGenerator.FormatSqlParameter("keys"); entities = connection.Query <TEntity>(_queryGenerator.SelectMany(Table, SelectFields, Key, keyParamName), parameters).ToList(); } finally { if (!_useProvidedConnection) { connection.Dispose(); } } if (entities.Any()) { results.AddRange(entities); } return(results); }