/// <summary>对指定字段使用实体缓存</summary> /// <param name="field"></param> public FieldCache(FieldItem field) { WaitFirst = false; Expire = 10 * 60; FillListMethod = () => { return(Entity <TEntity> .FindAll(_field.GroupBy(), _Unique.Desc(), _Unique.Count()& _field, 0, MaxRows)); }; _field = field; { var tb = field.Table; var id = tb.Identity; if (id == null && tb.PrimaryKeys != null && tb.PrimaryKeys.Length == 1) { id = tb.PrimaryKeys[0]; } if (id == null) { throw new Exception("{0}缺少唯一主键,无法使用缓存".F(tb.TableName)); } _Unique = id; } }
public static EntityList <Online> GetList(Int32 forumid = 0, String order = null, Boolean isdesc = false, Int32 start = 0, Int32 max = 200) { if (Meta.Count < CacheCount) { var list = Online.FindAllWithCache().Clone(); if (forumid > 0) { list = list.FindAll(__.ForumID, forumid); } // 如果隐藏游客 if (GeneralConfigInfo.Current.WhosOnlineContract) { list = list.FindAll(e => e.UserID > 0); } // 排序 if (!String.IsNullOrEmpty(order)) { FieldItem fi = Meta.Table.FindByName(order); if (fi != null) { list = list.Sort(fi.Name, isdesc); } } return(list.Page(start, max)); } else { // 最多返回1000行 var exp = new WhereExpression(); if (forumid > 0) { exp &= _.ForumID == forumid; } if (GeneralConfigInfo.Current.WhosOnlineContract) { exp &= _.UserID > 0; } // 排序 ConcatExpression dexp = null; if (!String.IsNullOrEmpty(order)) { FieldItem fi = Meta.Table.FindByName(order); if (fi != null) { if (isdesc) { dexp = fi.Desc(); } else { dexp = fi.Asc(); } } } return(FindAll(null, dexp, null, start, max)); } }