/// <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); }
/// <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(); })); }