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