/// <summary> /// 用自写 目录树拼装的 /// </summary> /// <param name="expression"></param> /// <returns></returns> public static T GetModel2(Expression <Func <T, bool> > expression) { Z_Analysis <T> z_ = new Z_Analysis <T>(expression); (string res, Dictionary <string, object> pairs) = z_.GetResult(); List <MySqlParameter> pp = pairs.GetMySqlPar(); string sql = SqlBuider <User> .GetSql(dataType.QCondition) + res; return(Excet <T>(sql, pp.ToArray(), cmd => { T t = Activator.CreateInstance <T>(); var reader = cmd.ExecuteReader(); if (reader.Read()) { foreach (System.Reflection.PropertyInfo item in t.GetType().GetPropertiesName(false)) { item.SetValue(t, reader[item.Name] is DBNull ? null : reader[item.Name]); } } else { return null; } return t; })); }
/// <summary> /// 根据Id删除记录 /// </summary> /// <param name="t"></param> /// <returns></returns> public static bool DeleteById(T t) { string sql = SqlBuider <T> .GetSql(dataType.DeleteModel); MySqlParameter[] parList = new MySqlParameter[] { new MySqlParameter("@Id", t.GetType().GetField("Id")) }; return(Excet <bool>(sql, parList, cmd => cmd.ExecuteNonQuery() == 1)); }
/// <summary> /// 根据传入实体Id去查询 /// </summary> /// <typeparam name="T">传入实体</typeparam> /// <param name="t"></param> /// <returns></returns> public static T GetModelById(T t) { string sql = SqlBuider <T> .GetSql(dataType.Query); MySqlParameter[] parList = new MySqlParameter[] { new MySqlParameter("@Id", t.Id) }; return(Excet <T>(sql, parList, cmd => { var reader = cmd.ExecuteReader(); if (reader.Read()) { //var dd = new //{ // reader[0]= reader[0] //}; foreach (System.Reflection.PropertyInfo item in t.GetType().GetPropertiesName(false)) { item.SetValue(t, reader[item.Name] is DBNull ? null : reader[item.Name]); } } return t; })); }
/// <summary> /// 更新。根据实体的Id去查找,更新所有字段 /// </summary> /// <param name="t"></param> /// <returns></returns> public static bool UpdateById(T t) { Type type = typeof(T); string sql = SqlBuider <T> .GetSql(dataType.Update); MySqlParameter[] parList = type.GetPropertiesName().Select(w => new MySqlParameter($"@{w.Name}", w.GetValue(t) ?? DBNull.Value)).ToArray(); return(Excet(sql, parList, cmd => cmd.ExecuteNonQuery() == 1)); }
/// <summary> /// 根据表达式的条件删除记录 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="exception"></param> /// <returns></returns> public static bool Delete(Expression exception) { ConditionBuilderVisitor2 visitor = new ConditionBuilderVisitor2(exception); var result = visitor.Condition(); string sql = SqlBuider <T> .GetSql(dataType.DeleteWhere) + result.Item1; return(Excet <bool>(sql, result.Item2.ToArray(), cmd => cmd.ExecuteNonQuery() == 1)); }
/// <summary> /// 根据表达式条件去查找记录 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> /// <returns></returns> public static T GetModel(Expression <Func <T, bool> > expression) { ConditionBuilderVisitor2 visitor = new ConditionBuilderVisitor2(expression); Tuple <string, List <MySqlParameter> > res = visitor.Condition(); string sql = SqlBuider <User> .GetSql(dataType.QCondition) + res.Item1; return(Excet <T>(sql, res.Item2.ToArray(), cmd => { T t = Activator.CreateInstance <T>(); var reader = cmd.ExecuteReader(); if (reader.Read()) { foreach (System.Reflection.PropertyInfo item in t.GetType().GetPropertiesName(false)) { item.SetValue(t, reader[item.Name] is DBNull ? null : reader[item.Name]); } } return t; })); }
/// <summary> /// 直接查询单表全部数据的, /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static List <T> GetList() { string sql = SqlBuider <T> .GetSql(dataType.Query); return(Excet(sql, null, cmd => { T t = Activator.CreateInstance <T>(); List <T> list = new List <T>(); var read = cmd.ExecuteReader(); while (read.Read()) { foreach (System.Reflection.PropertyInfo prop in t.GetType().GetProperties()) { prop.SetValue(t, read[prop.Name] is DBNull ? null : read[prop.Name]); } list.Add(t); t = Activator.CreateInstance <T>();//重置新的对象 } return list; })); }
/// <summary> /// 根据条件查询多条记录 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static List <T> GetList(Expression <Func <T, bool> > expression) { ConditionBuilderVisitor2 zlc = new ConditionBuilderVisitor2(expression); var res = zlc.Condition(); string sql = SqlBuider <T> .GetSql(dataType.QCondition) + res.Item1; return(Excet(sql, res.Item2.ToArray(), cmd => { T t = Activator.CreateInstance <T>(); List <T> list = new List <T>(); var read = cmd.ExecuteReader(); while (read.Read()) { foreach (System.Reflection.PropertyInfo prop in t.GetType().GetProperties()) { prop.SetValue(t, read[prop.Name] is DBNull ? null : read[prop.Name]); } list.Add(t); t = Activator.CreateInstance <T>();//重置新的对象 } return list; })); }