コード例 #1
0
        /// <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;
            }));
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        /// <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;
            }));
        }
コード例 #4
0
        /// <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));
        }
コード例 #5
0
        /// <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));
        }
コード例 #6
0
        /// <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;
            }));
        }
コード例 #7
0
        /// <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;
            }));
        }
コード例 #8
0
        /// <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;
            }));
        }