コード例 #1
0
        /// <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);
        }