Exemple #1
0
        /// <summary>
        /// 根据实体,插入数据,返回执行结果
        /// </summary>
        /// <param name="Entity">实体</param>
        /// <returns>影响数</returns>
        public static int Insert(T Entity)
        {
            Entity.Validate();

            var props = MemberInfoEx.GetPropertyCache <T>();

            return(DBHelper.RunSql(_InsertSql, props.Select(x => DBHelper.AddDbParameter(x.Name, x.FastGetValue(Entity))).ToArray()));
        }
Exemple #2
0
        /// <summary>
        /// 根据实体,更新数据,返回执行结果
        /// </summary>
        /// <param name="Entity">实体</param>
        /// <returns>影响数</returns>
        public static int UpdateEx(T Entity)
        {
            Entity.Validate();

            var props = MemberInfoEx.GetPropertyCache <T>();

            return(DBHelper.RunSql(_UpdateSql + "Where fGuid = @Uid", props.Select(x => DBHelper.AddDbParameter(x.Name, x.FastGetValue(Entity))).ToArray()));
        }
        /// <summary>
        /// 生成查询SQL
        /// </summary>
        /// <returns>查询sql语句</returns>
        internal string SelectSql()
        {
            List <PropertyInfo> props = MemberInfoEx.GetPropertyCache <T>();

            string sql = $"SELECT {string.Join(",", props.Select(x => $"{ x.GetCustomName() + "\r\n"}"))} \r\n" +
                         $"FROM {typeof(T).GetCustomName()}" + "\r\n";

            return(sql);
        }
Exemple #4
0
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="entity">实体</param>
        /// <returns></returns>
        public static WhereHelper <T> Update(T entity)
        {
            entity.Validate();

            WhereHelper <T> wherehelper = new WhereHelper <T>();

            List <PropertyInfo> properties = MemberInfoEx.GetPropertyCache <T>();

            properties.ForEach(x => wherehelper.ParaAppend(x.Name, x.FastGetValue(entity), false));

            return(wherehelper.StringAppend(_UpdateSql, " WHERE "));
        }
        /// <summary>
        /// /生成更新SQL
        /// </summary>
        /// <returns>更新SQL</returns>
        public string UpdateSql()
        {
            var props = MemberInfoEx.GetPropertyCache <T>()
                        .Where(x => !x.Name.Equals("Creator", StringComparison.OrdinalIgnoreCase) &&
                               !x.Name.Equals("CreateTime", StringComparison.OrdinalIgnoreCase) &&
                               !x.Name.Equals("Uid", StringComparison.OrdinalIgnoreCase));

            string sql = $"UPDATE {typeof(T).GetCustomName()} \r\n" +
                         $"SET {string.Join(",", props.Select(x => x.GetCustomName() + "= @" + x.Name + "\r\n"))}" + "\r\n";

            return(sql);
        }
        /// <summary>
        /// 生成插入SQL
        /// </summary>
        /// <returns>插入sql语句</returns>
        public string InsertSql()
        {
            var props = MemberInfoEx.GetPropertyCache <T>()
                        .Where(x => !x.Name.Equals("Modifier", StringComparison.OrdinalIgnoreCase) &&
                               !x.Name.Equals("ModifyTime", StringComparison.OrdinalIgnoreCase));

            string sql = $"INSERT INTO {typeof(T).GetCustomName()}\r\n" +
                         $"(\r\n" +
                         $"{string.Join(",", props.Select(x => x.GetCustomName() + "\r\n"))}" +
                         $")\r\n" +
                         $"values({string.Join(",", props.Select(x => $"@{x.Name}"))})" + "\r\n";

            return(sql);
        }
Exemple #7
0
        /// <summary>
        /// 根据DataTable,方法中自动获取变化数据更新数据库
        /// </summary>
        /// <param name="dt">内存数据</param>
        /// <param name="isChange">是否为变化数据</param>
        /// <returns></returns>
        public static bool Save(DataTable dt, bool isChange = false)
        {
            DataTable dtChanges = null;

            if (isChange)
            {
                dtChanges = dt;
            }
            else
            {
                dtChanges = dt.GetChanges();
            }

            if (dtChanges == null || dtChanges.Rows.Count == 0)
            {
                return(true);
            }

            List <string> listSqls = new List <string>();

            List <PropertyInfo> properties;

            List <List <DbParameter> > listDbParas = new List <List <DbParameter> >();

            foreach (DataRow dr in dtChanges.Rows)
            {
                dr.Validate <T>();

                switch (dr.RowState)
                {
                case DataRowState.Added:

                    listSqls.Add(_InsertSql);

                    properties = MemberInfoEx.GetPropertyCache <T>();

                    dr["fCreator"]    = Environment.MachineName;
                    dr["fCreateTime"] = DateTime.Now;

                    listDbParas.Add(properties.Select(x => DBHelper.AddDbParameter(x.Name, dr[x.GetCustomName()])).ToList());

                    break;

                case DataRowState.Deleted:

                    listSqls.Add(_DeleteSql + $" WHERE fGuid = '{dr["fGuid", DataRowVersion.Original]}'");

                    listDbParas.Add(new List <DbParameter>());

                    break;

                case DataRowState.Modified:

                    listSqls.Add(_UpdateSql + $" WHERE fGuid ='{dr["fGuid"]}'");

                    properties = MemberInfoEx.GetPropertyCache <T>();

                    dr["fModifier"]   = Environment.MachineName;
                    dr["fModifyTime"] = DateTime.Now;

                    listDbParas.Add(properties.Select(x => DBHelper.AddDbParameter(x.Name, dr[x.GetCustomName()])).ToList());

                    break;

                default:
                    break;
                }
            }
            bool Result = DBHelper.RunSql(listSqls, listDbParas);

            if (Result)
            {
                dt.AcceptChanges();
            }

            return(Result);
        }