Esempio n. 1
0
        /// <summary>
        /// 根据参数条件筛选数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public IEnumerable <T> Query <T>(string sql, dynamic param,
                                         IDbConnection conn, IDbTransaction transaction) where T : class
        {
            CacheInfo cacheInfo = new CacheInfo();

            if (param != null)
            {
                var identity = new Identity(sql, CommandType.Text, conn, null, param == null ? null : param.GetType(), null);
                cacheInfo.ParamReader = SqlCached.CreateParamInfoGenerator(identity, false);
            }

            IDbCommand cmd = null;

            try
            {
                cmd = SetupCommand(sql, cacheInfo.ParamReader, param, CommandType.Text, conn, transaction);
                IDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    DynamicBuilder <T> builder = DynamicBuilder <T> .CreateBuilder(reader);

                    yield return(builder.Build(reader));
                }
                reader.Close();
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 数据查询方法
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="cmd"></param>
        /// <returns></returns>
        public IEnumerable <T> Query <T>(IDbCommand cmd, IDbConnection conn, IDbTransaction transaction) where T : class
        {
            try
            {
                cmd.Connection  = conn;
                cmd.Transaction = transaction;
                IDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    DynamicBuilder <T> builder = DynamicBuilder <T> .CreateBuilder(reader);

                    yield return(builder.Build(reader));
                }
                reader.Close();
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
            }
        }