internal string GetTableNameByClassType(string typeName) { if (_mappingTableList.IsValuable()) { //Key为实体类 Value为表名 if (_mappingTableList.Any(it => it.Key == typeName)) { typeName = _mappingTableList.First(it => it.Key == typeName).Value; } } return(typeName); }
private void InsertEvents(SysBest_Element insObj, int addressId, List <ElementEvent> formEvents, int elementId, string founder) { if (formEvents.IsValuable()) { _db.Delete <SysBest_ElementEvent>(it => it.ElementId == elementId); List <SysBest_ElementEvent> insertEventList = new List <SysBest_ElementEvent>(); foreach (var it in formEvents) { if (it.Value.IsNullOrEmpty()) { continue; } SysBest_ElementEvent data = new SysBest_ElementEvent() { ElementId = elementId, Key = it.Key, Value = it.Value, LinkId = addressId, EventType = it.EventType.TryToInt(), Pars = (it.Pars.TryToString()).ToUrlDecode().Replace("$^douhao^$", ","), CreateTime = DateTime.Now, Founder = insObj.Founder, Sort = 0 }; insertEventList.Add(data); } _db.InsertRange(insertEventList, false); } }
private void InsertAttrs(int addressId, List <ElementAttr> formAttrs, int elementId, string founder) { if (formAttrs.IsValuable()) { _db.Delete <SysBest_ElementAttr>(it => it.ElementId == elementId); //插入属性 List <SysBest_ElementAttr> insertAttrList = new List <SysBest_ElementAttr>(); foreach (var it in formAttrs) { if (it.Value.IsNullOrEmpty()) { continue; } SysBest_ElementAttr data = new SysBest_ElementAttr() { ElementId = elementId, Key = it.Key, Value = it.Value, LinkId = addressId, Sort = 0, CreateTime = DateTime.Now, Founder = "admin" }; insertAttrList.Add(data); } _db.InsertRange(insertAttrList, false); } }
/// <summary> /// 向用户发送邮件 /// </summary> /// <param name="receive">接收邮件的用户</param> /// <param name="sendUser">发送者显求的邮箱地址,可为空</param> /// <param name="displayName">收件人显示发件人的联系人名,可为中文</param> /// <param name="sendUserName">发送者的邮箱登陆名,可以与发送者地址一样</param> /// <param name="userPassword">发送者的登陆密码</param> /// <param name="mailTitle">发送标题</param> /// <param name="mailContent">发送的内容</param> /// <param name="cc">抄送人</param> public static void SendMail(List <string> receive, string displayName, string sendUser, string sendUserName, string userPassword, string mailTitle, string mailContent, List <string> cc = null) { MailAddress fromMail = new MailAddress(sendUser, displayName);//发送者邮箱 MailMessage mail = new MailMessage() { From = fromMail, Subject = mailTitle, IsBodyHtml = true,//是否支持HTML Body = mailContent }; receive.ForEach(m => mail.To.Add(m)); if (cc.IsValuable()) { cc.ForEach(m => mail.CC.Add(m)); } SmtpClient client = new SmtpClient { Host = "smtp.exmail.qq.com",//设置发送者邮箱对应的smtpserver UseDefaultCredentials = false, //Port = 465, Credentials = new NetworkCredential(sendUserName, userPassword), DeliveryMethod = SmtpDeliveryMethod.Network }; try { client.Send(mail); } catch (SmtpException ex) { throw new Exception("发送邮件信息异常", ex); } }
/// <summary> /// 设置实体类与表名的映射, Key为实体类 Value为表名 /// </summary> /// <param name="mappingTables"></param> public void SetMappingTables(List <KeyValue> mappingTables) { if (mappingTables.IsValuable()) { _mappingTableList = mappingTables; } }
/// <summary> /// 设置流水号 (说明:Dictionary<流水号名称, Func<{表名,字段名},返回的流水号>>) /// </summary> /// <param name="serNum"></param> public void SetSerialNumber(List <PubModel.SerialNumber> serNum) { if (serNum.IsValuable()) { _serialNumber = serNum; } }
/// <summary> /// 批量插入(说明:一次更新超过10条以上建议使用SqlBulkReplace) /// </summary> /// <typeparam name="T"></typeparam> /// <param name="rowObjList">更新实体的集合,rowObj必需包含主键并且不能为匿名对象</param> /// <returns>执行成功将返回bool的集合</returns> public List <bool> UpdateRange <T>(List <T> rowObjList) where T : class { var reval = new List <bool>(); if (rowObjList.IsValuable()) { foreach (T item in rowObjList) { reval.Add(Update <T>(item)); } } return(reval); }
public List <SysBest_DataApi> GetDataApiWithEleEventByEleId(List <SysBest_Element> eleList) { List <SysBest_DataApi> reval = new List <SysBest_DataApi>(); if (eleList.IsValuable()) { eleList.ForEach(it => { reval.AddRange(GetDataApiWithEleEventByEleId(it.Id)); }); } return(reval); }
/// <summary> /// 根据DataTable获取实体类的字符串 /// </summary> /// <param name="sql"></param> /// <param name="className"></param> /// <returns></returns> public string DataTableToClass(DataTable dt, string className, string nameSpace = null, List <PubModel.DataTableMap> dataTableMapList = null) { StringBuilder reval = new StringBuilder(); StringBuilder propertiesValue = new StringBuilder(); string replaceGuid = Guid.NewGuid().ToString(); foreach (DataColumn r in dt.Columns) { propertiesValue.AppendLine(); string typeName = ChangeType(r.DataType); bool isAny = false; PubModel.DataTableMap columnInfo = new PubModel.DataTableMap(); if (dataTableMapList.IsValuable()) { isAny = dataTableMapList.Any(it => it.COLUMN_NAME.ToString() == r.ColumnName); if (isAny) { columnInfo = dataTableMapList.First(it => it.COLUMN_NAME.ToString() == r.ColumnName); propertiesValue.AppendFormat(@" /// <summary> /// 说明:{0} /// 默认:{1} /// 可空:{2} /// </summary> ", columnInfo.COLUMN_DESCRIPTION.IsValuable() ? columnInfo.COLUMN_DESCRIPTION.ToString() : "-", //{0} columnInfo.COLUMN_DEFAULT.IsValuable() ? columnInfo.COLUMN_DEFAULT.ToString() : "-", //{1} Convert.ToBoolean(columnInfo.IS_NULLABLE)); //{2} } } propertiesValue.AppendFormat(" public {0} {1} {2}", isAny ? ChangeNullable(typeName, Convert.ToBoolean(columnInfo.IS_NULLABLE)) : typeName, r.ColumnName, "{get;set;}"); propertiesValue.AppendLine(); } reval.AppendFormat(@" public class {0}{{ {1} }} ", className, propertiesValue); if (nameSpace != null) { return(string.Format(@"using System; namespace {1} {{ {0} }}", reval.ToString(), nameSpace)); } else { return(reval.ToString()); } }
/// <summary> /// 根据DataTable获取实体类的字符串 /// </summary> /// <param name="sql"></param> /// <param name="className"></param> /// <returns></returns> public string DataTableToClass(DataTable dt, string className, string nameSpace = null, List <PubModel.DataTableMap> dataTableMapList = null) { StringBuilder reval = new StringBuilder(); StringBuilder propertiesValue = new StringBuilder(); string replaceGuid = Guid.NewGuid().ToString(); var template = ClassTemplate.Template; string _ns = nameSpace; string _foreach = ""; string _className = className; List <string> _primaryKeyName = new List <string>(); foreach (DataColumn r in dt.Columns) { propertiesValue.AppendLine(); string typeName = ChangeType(r.DataType); bool isAny = false; PubModel.DataTableMap columnInfo = new PubModel.DataTableMap(); if (dataTableMapList.IsValuable()) { isAny = dataTableMapList.Any(it => it.COLUMN_NAME.ToString() == r.ColumnName); if (isAny) { columnInfo = dataTableMapList.First(it => it.COLUMN_NAME.ToString() == r.ColumnName); if (columnInfo.IS_PRIMARYKEY.ToString() == "1") { _primaryKeyName.Add(r.ColumnName); } propertiesValue.AppendFormat(@" /// <summary> /// Desc:{0} /// Default:{1} /// Nullable:{2} /// </summary> ", columnInfo.COLUMN_DESCRIPTION.IsValuable() ? columnInfo.COLUMN_DESCRIPTION.ToString() : "-", //{0} columnInfo.COLUMN_DEFAULT.IsValuable() ? columnInfo.COLUMN_DEFAULT.ToString() : "-", //{1} Convert.ToBoolean(columnInfo.IS_NULLABLE)); //{2} } } propertiesValue.AppendFormat( ClassTemplate.ItemTemplate, isAny ? ChangeNullable(typeName, Convert.ToBoolean(columnInfo.IS_NULLABLE)) : typeName, r.ColumnName, "{get;set;}", ""); propertiesValue.AppendLine(); } _foreach = propertiesValue.ToString(); template = ClassTemplate.Replace(template, _ns, _foreach, _className, _primaryKeyName); return(template); }
/// <summary> /// 将源数据对象转换到新对象中 /// </summary> /// <typeparam name="TSource"></typeparam> /// <typeparam name="TResult"></typeparam> /// <param name="queryable"></param> /// <param name="expression"></param> /// <returns></returns> public static Queryable <TResult> Select <TSource, TResult>(this Queryable <TSource> queryable, Expression <Func <TSource, TResult> > expression) { var type = typeof(TSource); var expStr = expression.ToString(); Queryable <TResult> reval = new Queryable <TResult>() { DB = queryable.DB, OrderBy = queryable.OrderBy, Params = queryable.Params, Skip = queryable.Skip, Take = queryable.Take, Where = queryable.Where, TableName = type.Name, GroupBy = queryable.GroupBy, JoinTable = queryable.JoinTable }; var selectStr = Regex.Match(expStr, @"(?<=\{).*?(?=\})").Value; var items = selectStr.Split(','); var newItems = new List <string>(); if (selectStr.IsNullOrEmpty()) { items = Regex.Match(expStr, @"c =>.*?\((.+)\)").Groups[1].Value.Split(','); } if (items.IsValuable()) { foreach (var item in items) { var itemArray = item.Trim().Split('='); if (reval.JoinTable.IsValuable()) { newItems.Add(itemArray.Last() + " AS " + itemArray.First()); } else { newItems.Add(itemArray.Last().Split('.').Last() + " AS " + itemArray.First()); } } } reval.Select = "*"; if (newItems.IsValuable()) { reval.Select = string.Join(",", newItems); } return(reval); }
/// <summary> /// 处理业务逻辑(只是示例就算看不懂,不合理也没关系,重要的是这儿是处理逻辑的) /// </summary> /// <param name="allTopic"></param> /// <returns></returns> internal List <List <V_dnt_test_topics> > ArrangeTopic(List <V_dnt_test_topics> allTopic) { var reval = new List <List <V_dnt_test_topics> >(); var groupTypeIdList = allTopic.GroupBy(it => it.fid).Select(it => it.Key).ToList(); if (allTopic.IsValuable()) { foreach (var typeId in groupTypeIdList) { var addItem = allTopic.Where(it => it.fid == typeId).Take(4).ToList();//取四条 if (addItem.IsValuable()) { reval.Add(addItem); } } } return(reval); }
internal string GetClassString(List <DbColumnInfo> columns, ref string className) { string classText = this.ClassTemplate; string ConstructorText = IsDefaultValue ? this.ConstructorTemplate : null; classText = classText.Replace(DbFirstTemplate.KeyClassName, className); classText = classText.Replace(DbFirstTemplate.KeyNamespace, this.Namespace); classText = classText.Replace(DbFirstTemplate.KeyUsing, IsAttribute ? (this.UsingTemplate + "using " + UtilConstants.AssemblyName + ";\r\n") : this.UsingTemplate); classText = classText.Replace(DbFirstTemplate.KeyClassDescription, this.ClassDescriptionTemplate.Replace(DbFirstTemplate.KeyClassDescription, "\r\n")); classText = classText.Replace(DbFirstTemplate.KeySugarTable, IsAttribute ? string.Format(DbFirstTemplate.ValueSugarTable, className) : null); if (columns.IsValuable()) { foreach (var item in columns) { var isLast = columns.Last() == item; var index = columns.IndexOf(item); string PropertyText = this.PropertyTemplate; string PropertyDescriptionText = this.PropertyDescriptionTemplate; string propertyName = GetPropertyName(item); string propertyTypeName = item.PropertyName; PropertyText = GetPropertyText(item, PropertyText); PropertyDescriptionText = GetPropertyDescriptionText(item, PropertyDescriptionText); PropertyText = PropertyDescriptionText + PropertyText; classText = classText.Replace(DbFirstTemplate.KeyPropertyName, PropertyText + (isLast ? "" : ("\r\n" + DbFirstTemplate.KeyPropertyName))); if (ConstructorText.IsValuable() && item.DefaultValue != null) { var hasDefaultValue = columns.Skip(index + 1).Any(it => it.DefaultValue.IsValuable()); ConstructorText = ConstructorText.Replace(DbFirstTemplate.KeyPropertyName, propertyName); ConstructorText = ConstructorText.Replace(DbFirstTemplate.KeyDefaultValue, GetPropertyTypeConvert(item)) + (!hasDefaultValue ? "" : this.ConstructorTemplate); } } } if (!columns.Any(it => it.DefaultValue != null)) { ConstructorText = null; } classText = classText.Replace(DbFirstTemplate.KeyConstructor, ConstructorText); classText = classText.Replace(DbFirstTemplate.KeyPropertyName, null); return(classText); }
public override bool CreateTable(string tableName, List <DbColumnInfo> columns) { if (columns.IsValuable()) { foreach (var item in columns) { if (item.DbColumnName.Equals("GUID", StringComparison.CurrentCultureIgnoreCase)) { item.Length = 20; } if (item.IsIdentity && !item.IsPrimarykey) { item.IsPrimarykey = true; Check.Exception(item.DataType == "integer", "Identity only integer type"); } } } string sql = GetCreateTableSql(tableName, columns); this.Context.Ado.ExecuteCommand(sql); return(true); }
public override bool CreateTable(string tableName, List <DbColumnInfo> columns) { if (columns.IsValuable()) { foreach (var item in columns) { if (item.DbColumnName.Equals("GUID", StringComparison.CurrentCultureIgnoreCase) && item.Length == 0) { item.Length = 36; } } } string sql = GetCreateTableSql(tableName, columns); string primaryKeyInfo = null; if (columns.Any(it => it.IsIdentity)) { primaryKeyInfo = string.Format(", Primary key({0})", string.Join(",", columns.Where(it => it.IsIdentity).Select(it => this.SqlBuilder.GetTranslationColumnName(it.DbColumnName)))); } sql = sql.Replace("$PrimaryKey", primaryKeyInfo); this.Context.Ado.ExecuteCommand(sql); return(true); }
/// <summary> /// 匹配类型 /// </summary> /// <param name="type"></param> /// <returns></returns> public string ChangeType(Type type, List <PubModel.DataTableMap> list) { var om = OracleConfig.OracleNumberTypeMapping; string typeName = type.Name; if (list.IsValuable() && list.Single().DATA_TYPE.ToString().ToLower() == "number") { var map = list.Single(); switch (map.DATA_SCALE.ObjToInt()) { case 0: if (om.ContainsKey(map.DATA_PRECISION.ObjToInt())) { typeName = om[map.DATA_PRECISION.ObjToInt()]; } else { typeName = "int"; } break; case 2: typeName = "double"; break; default: break; } } switch (typeName) { case "Int32": typeName = "int"; break; case "String": typeName = "string"; break; } return(typeName); }
/// <summary> ///遍历表名和视图名 /// </summary> /// <param name="db"></param> /// <param name="action">string为表名</param> public void ForeachTables(SqlSugarClient db, Action <string> action) { Check.ArgumentNullException(action, "ForeachTables.action不能为null。"); string cacgeKey = "ClassGenerating.ForeachTables"; var cm = CacheManager <List <string> > .GetInstance(); List <string> tables = null; if (cm.ContainsKey(cacgeKey)) { tables = cm[cacgeKey]; } else { tables = GetTableNames(db); } if (tables.IsValuable()) { foreach (var item in tables) { action(item); } } }
/// <summary> /// 根据DataTable获取实体类的字符串 /// </summary> /// <param name="dt"></param> /// <param name="className"></param> /// <param name="nameSpace"></param> /// <param name="dataTableMapList"></param> /// <returns></returns> public string DataTableToClass(DataTable dt, string className, string nameSpace = null, List<PubModel.DataTableMap> dataTableMapList = null) { StringBuilder reval = new StringBuilder(); StringBuilder propertiesValue = new StringBuilder(); string replaceGuid = Guid.NewGuid().ToString(); var template = ClassTemplate.Template; string _ns = nameSpace; string _foreach = ""; string _className = className; List<string> _primaryKeyName = new List<string>(); foreach (DataColumn r in dt.Columns) { propertiesValue.AppendLine(); string typeName = ChangeType(r.DataType); bool isAny = false; PubModel.DataTableMap columnInfo = new PubModel.DataTableMap(); if (dataTableMapList.IsValuable()) { isAny = dataTableMapList.Any(it => it.COLUMN_NAME.ToString() == r.ColumnName); if (isAny) { columnInfo = dataTableMapList.First(it => it.COLUMN_NAME.ToString() == r.ColumnName); if (columnInfo.IS_PRIMARYKEY.ToString() == "1") { _primaryKeyName.Add(r.ColumnName); } propertiesValue.AppendFormat(ClassTemplate.ClassFieldSummaryTemplate, columnInfo.COLUMN_DESCRIPTION.IsValuable() ? columnInfo.COLUMN_DESCRIPTION.ToString() : "-", //{0} columnInfo.COLUMN_DEFAULT.IsValuable() ? columnInfo.COLUMN_DEFAULT.ToString() : "-", //{1} Convert.ToBoolean(columnInfo.IS_NULLABLE));//{2} } } propertiesValue.AppendFormat( ClassTemplate.ItemTemplate, isAny ? ChangeNullable(typeName, Convert.ToBoolean(columnInfo.IS_NULLABLE)) : typeName, r.ColumnName, "{get;set;}", ""); propertiesValue.AppendLine(); } _foreach = propertiesValue.ToString(); template = ClassTemplate.Replace(template, _ns, _foreach, _className, _primaryKeyName); return template; }
/// <summary> /// 插入 /// 使用说明:sqlSugar.Insert(entity); /// </summary> /// <typeparam name="T"></typeparam> /// <param name="entity">插入对象</param> /// <param name="isIdentity">该属性已经作废可以不填,主键是否为自增长,true可以不填,false必填</param> /// <returns></returns> public object Insert <T>(T entity, bool isIdentity = true) where T : class { Type type = entity.GetType(); string typeName = type.Name; typeName = GetTableNameByClassType(typeName); StringBuilder sbInsertSql = new StringBuilder(); List <MySqlParameter> pars = new List <MySqlParameter>(); var identities = SqlSugarTool.GetIdentitiesKeyByTableName(this, typeName); isIdentity = identities != null && identities.Count > 0; //sql语句缓存 string cacheSqlKey = "db.Insert." + typeName; var cacheSqlManager = CacheManager <StringBuilder> .GetInstance(); //属性缓存 string cachePropertiesKey = "db." + typeName + ".GetProperties"; var cachePropertiesManager = CacheManager <PropertyInfo[]> .GetInstance(); PropertyInfo[] props = null; if (cachePropertiesManager.ContainsKey(cachePropertiesKey)) { props = cachePropertiesManager[cachePropertiesKey]; } else { props = type.GetProperties(); cachePropertiesManager.Add(cachePropertiesKey, props, cachePropertiesManager.Day); } var isContainCacheSqlKey = cacheSqlManager.ContainsKey(cacheSqlKey); if (isContainCacheSqlKey) { sbInsertSql = cacheSqlManager[cacheSqlKey]; } else { //2.获得实体的属性集合 //实例化一个StringBuilder做字符串的拼接 sbInsertSql.Append("insert into " + typeName + " ("); //3.遍历实体的属性集合 foreach (PropertyInfo prop in props) { //EntityState,@EntityKey if (!isIdentity || identities.Any(it => it.Value.ToLower() != prop.Name.ToLower())) { //4.将属性的名字加入到字符串中 sbInsertSql.Append("`" + prop.Name + "`,"); } } //**去掉最后一个逗号 sbInsertSql.Remove(sbInsertSql.Length - 1, 1); sbInsertSql.Append(" ) values("); } //5.再次遍历,形成参数列表"(@xx,@xx@xx)"的形式 foreach (PropertyInfo prop in props) { //EntityState,@EntityKey if (!isIdentity || identities.Any(it => it.Value.ToLower() != prop.Name.ToLower())) { if (!cacheSqlManager.ContainsKey(cacheSqlKey)) { sbInsertSql.Append("@" + prop.Name + ","); } object val = prop.GetValue(entity, null); if (val == null) { val = DBNull.Value; } if (_serialNumber.IsValuable()) { Func <PubModel.SerialNumber, bool> serEexp = it => it.TableName.ToLower() == typeName.ToLower() && it.FieldName.ToLower() == prop.Name.ToLower(); var isAnyNum = _serialNumber.Any(serEexp); if (isAnyNum && (val == DBNull.Value || val.IsNullOrEmpty())) { val = _serialNumber.First(serEexp).GetNumFunc(); } } if (prop.PropertyType.IsEnum) { val = (int)(val); } var par = new MySqlParameter("@" + prop.Name, val); pars.Add(par); } } if (!isContainCacheSqlKey) { //**去掉最后一个逗号 sbInsertSql.Remove(sbInsertSql.Length - 1, 1); if (isIdentity == false) { sbInsertSql.Append(");select 'true';"); } else { sbInsertSql.Append(");select @@identity;"); } cacheSqlManager.Add(cacheSqlKey, sbInsertSql, cacheSqlManager.Day); } var sql = sbInsertSql.ToString(); try { var lastInsertRowId = GetScalar(sql, pars.ToArray()); return(lastInsertRowId); } catch (Exception ex) { var cacheManager = CacheManager <string> .GetInstance(); cacheManager.RemoveAll(it => it.Contains("KeyBy")); throw new Exception("sql:" + sql + "\n" + ex.Message); } }
/// <summary> /// 插入 /// 使用说明:sqlSugar.Insert(entity); /// </summary> /// <typeparam name="T"></typeparam> /// <param name="entity">插入对象</param> /// <param name="isIdentity">该属性已经作废可以不填,主键是否为自增长,true可以不填,false必填</param> /// <returns></returns> public object Insert <T>(T entity, bool isIdentity = true) where T : class { Type type = entity.GetType(); string typeName = type.Name; typeName = GetTableNameByClassType(typeName); var seqMap = OracleConfig.SequenceMapping; StringBuilder sbInsertSql = new StringBuilder(); List <OracleParameter> pars = new List <OracleParameter>(); var identities = SqlSugarTool.GetIdentitiesKeyByTableName(this, typeName); isIdentity = identities != null && identities.Where(it => it.Key.ToLower() == typeName.ToLower()).Count() > 0; //sql语句缓存 string cacheSqlKey = "db.Insert." + type.FullName; var cacheSqlManager = CacheManager <StringBuilder> .GetInstance(); //属性缓存 string cachePropertiesKey = "db." + type.FullName + ".GetProperties"; var cachePropertiesManager = CacheManager <PropertyInfo[]> .GetInstance(); PropertyInfo[] props = null; if (cachePropertiesManager.ContainsKey(cachePropertiesKey)) { props = cachePropertiesManager[cachePropertiesKey]; } else { props = type.GetProperties(); cachePropertiesManager.Add(cachePropertiesKey, props, cachePropertiesManager.Day); } var isContainCacheSqlKey = cacheSqlManager.ContainsKey(cacheSqlKey); if (isContainCacheSqlKey) { sbInsertSql = cacheSqlManager[cacheSqlKey]; } else { //2.获得实体的属性集合 //实例化一个StringBuilder做字符串的拼接 sbInsertSql.Append("insert into " + typeName + " ("); //3.遍历实体的属性集合 foreach (PropertyInfo prop in props) { if (this.IsIgnoreErrorColumns) { if (!SqlSugarTool.GetColumnsByTableName(this, typeName).Any(it => it.ToLower() == prop.Name.ToLower())) { continue; } } //4.将属性的名字加入到字符串中 sbInsertSql.Append("" + prop.Name + ","); } //**去掉最后一个逗号 sbInsertSql.Remove(sbInsertSql.Length - 1, 1); sbInsertSql.Append(" ) values("); } //5.再次遍历,形成参数列表"(@xx,@xx@xx)"的形式 foreach (PropertyInfo prop in props) { //EntityState,@EntityKey if (!isIdentity || identities.Any(it => it.Value.ToLower() != prop.Name.ToLower())) { if (this.IsIgnoreErrorColumns) { if (!SqlSugarTool.GetColumnsByTableName(this, typeName).Any(it => it.ToLower() == prop.Name.ToLower())) { continue; } } if (!cacheSqlManager.ContainsKey(cacheSqlKey)) { sbInsertSql.Append(":" + prop.Name + ","); } object val = prop.GetValue(entity, null); if (val == null) { val = DBNull.Value; } if (_serialNumber.IsValuable()) { Func <PubModel.SerialNumber, bool> serEexp = it => it.TableName.ToLower() == typeName.ToLower() && it.FieldName.ToLower() == prop.Name.ToLower(); var isAnyNum = _serialNumber.Any(serEexp); if (isAnyNum && (val == DBNull.Value || val.IsNullOrEmpty())) { if (_serialNumber.First(serEexp).GetNumFunc != null) { val = _serialNumber.First(serEexp).GetNumFunc(); } if (_serialNumber.First(serEexp).GetNumFuncWithDb != null) { val = _serialNumber.First(serEexp).GetNumFuncWithDb(this); } } } if (prop.PropertyType.IsEnum) { val = (int)(val); } var par = new OracleParameter(":" + prop.Name, val.ToOracleParValue()); OracleConfig.SetParType(typeName, prop, par, this); SqlSugarTool.SetParSize(par); pars.Add(par); } else { if (!cacheSqlManager.ContainsKey(cacheSqlKey)) { var seqList = seqMap.Where(it => it.TableName.ToLower() == typeName.ToLower() && it.ColumnName.ToLower() == prop.Name.ToLower()); if (seqList.Any()) { var seqName = seqList.First().Value; sbInsertSql.Append(seqName + ".Nextval,"); } else { sbInsertSql.Append("null,"); } } } } if (!isContainCacheSqlKey) { //**去掉最后一个逗号 sbInsertSql.Remove(sbInsertSql.Length - 1, 1); sbInsertSql.Append(")"); cacheSqlManager.Add(cacheSqlKey, sbInsertSql, cacheSqlManager.Day); } var sql = sbInsertSql.ToString(); try { var lastInsertRowId = ExecuteCommand(sql, pars.ToArray()); if (lastInsertRowId > 0) { if (isIdentity) { var seqName = seqMap.First(it => it.TableName.ToLower() == typeName.ToLower()).Value; var eqValue = GetInt("SELECT " + seqName + ".currval from dual"); lastInsertRowId = eqValue; } else { lastInsertRowId = 1; } } return(lastInsertRowId); } catch (Exception ex) { throw new Exception("sql:" + sql + "\n" + ex.Message); } }
/// <summary> /// 设置在线信息 /// </summary> /// <param name="_userInfo"></param> private void SetOnlineVisitors(UserInfo _userInfo) { var timeOut = DateTime.Now.AddMinutes(-PubConst.SiteOnlineTimeOut); List <OnlineVisitorsResult> onlineList = null; var key = PubConst.SessionOnline; var cm = CacheManager <List <OnlineVisitorsResult> > .GetInstance(); if (cm.ContainsKey(key)) { onlineList = cm[key]; if (onlineList.IsValuable()) { //过滤超时用户 onlineList = onlineList.Where(it => it.LastActionTime > timeOut).ToList(); } } if (onlineList == null || onlineList.Count == 0) { onlineList = new List <OnlineVisitorsResult>(); } var ip = RequestInfo.UserAddress; OnlineVisitorsResult o = new OnlineVisitorsResult(); o.User = new UserInfo(); if (_userInfo != null && _userInfo.Id > 0) { var oItem = onlineList.FirstOrDefault(it => it.User.Id == _userInfo.Id); if (oItem != null) { oItem.LastActionTime = DateTime.Now; oItem.LastActionIp = ip; } else { o.User = _userInfo; o.LastActionIp = ip; o.LastActionTime = DateTime.Now; onlineList.Add(o); } } else { var oItem = onlineList.FirstOrDefault(it => it.LastActionIp == ip); if (oItem != null) { oItem.LastActionTime = DateTime.Now; oItem.LastActionIp = ip; } else { o.User = new UserInfo() { RoleId = PubEnum.RoleType.Tourist.TryToInt() }; o.LastActionIp = ip; o.LastActionTime = DateTime.Now; onlineList.Add(o); } } cm.Add(key, onlineList, cm.Day); ViewBag.OnlineVisitorsResult = onlineList; }
/// <summary> /// 设置类名和表名的映射 key 为类名 value 为表名 /// </summary> /// <param name="mappingTables"></param> public void SetMappingTables(List<KeyValuePair> mappingTables) { if (mappingTables.IsValuable()) { _mappingTableList = mappingTables; } }
protected void Page_Load(object sender, EventArgs e) { /***扩展函数名细***/ //【IsInRange】 int num = 100; //以前写法 if (num > 100 & num < 1000) { } //现在写法 if (num.IsInRange(100, 1000)) { } //datetime类型也支持 //【IsNullOrEmpty】 object s = ""; //以前写法 if (s == null || string.IsNullOrEmpty(s.ToString())) { } //现在写法 if (s.IsNullOrEmpty()) { } //更顺手了没有 } //【IsIn】 string value = "a"; //以前写法我在很多项目中看到 if (value == "a" || value == "b" || value == "c") { } //现在写法 if (value.IsIn("a", "b", "c")) { } //【IsContainsIn】 //以前写法 if ("abcd".Contains("abc") || "abcd".Contains("xxx")) { } //现在写法 if ("abcd".IsContainsIn("abc", "xxx")) { } //【IsValuable与IsNullOrEmpty相反】 string ss = ""; //以前写法 if (!string.IsNullOrEmpty(ss)) { } //现在写法 if (s.IsValuable()) { } List <string> list = null; //以前写法 if (list != null && list.Count > 0) { } //现在写法 if (list.IsValuable()) { } //IsIDcard if ("32061119810104311x".IsIDcard()) { } //IsTelephone if ("0513-85669884".IsTelephone()) { } //IsMatch 节约你引用Regex的命名空间了 if ("我中国人12".IsMatch(@"人\d{2}")) { } //下面还有很多太简单了的就不介绍了 //IsZero //IsInt //IsNoInt //IsMoney //IsEamil //IsMobile }