Exemple #1
0
        /// <summary>
        /// IDataReader转化为实体
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="reader"></param>
        /// <returns></returns>
        private static IEnumerable <T> ReaderToEntity <T>(this IDataReader reader)
        {
            List <T> list    = new List <T>();
            var      myTable = FasterCore <T> .GetPropTable();

            while (reader.Read())
            {
                T t = Activator.CreateInstance <T>();
                foreach (var item in myTable.Columns)
                {
                    if (reader.Contain(item.Alias))
                    {
                        var propInfo = typeof(T).GetProperty(item.Name);
                        propInfo.SetValue(t, reader[item.Alias] == DBNull.Value ? null : reader[item.Alias]);
                    }
                }
                ;
                list.Add(t);
            }

            return(list);
        }
Exemple #2
0
        /// <summary>
        /// 批量删除实体,生成一条语句。优化速度
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="connection"></param>
        /// <param name="keys"></param>
        /// <returns></returns>
        public static int BulkRemove <T>(this IDbConnection connection, IEnumerable <T> param)
        {
            StringBuilder strSql = new StringBuilder();

            return(connection.Execute(command =>
            {
                //生成语句
                var myTable = FasterCore <T> .GetPropTable();
                var query = myTable.Columns.Where(m => m.Identity == false);

                int i = 0;
                foreach (var item in param)
                {
                    strSql.Append($"delete from  {myTable.Name}  where {string.Join(" and ", query.Select(m => $"{m.Alias}=@{m.Name + i}"))} ;");
                    i++;
                }

                command.CommandText = strSql.ToString();
                command.AddParams(param);

                return command.ExecuteNonQuery();
            }));
        }