/// <summary> /// 查询用户最新事件列表。 /// </summary> /// <param name="userId">用户Id。</param> /// <param name="size">最新数量。</param> /// <returns>返回事件查询列表。</returns> public virtual IEnumerable <Event> LoadUserEvents(int userId, int size) { return(_edb.AsQueryable() .WithNolock() .Where(x => x.UserId == userId) .OrderByDescending(x => x.Id) .AsEnumerable(size)); }
/// <summary> /// 获取当前所有者的角色Id。 /// </summary> /// <returns>当前所有者的角色Id。</returns> protected virtual int GetOwnerId() { return(_rdb.AsQueryable() .Select(x => x.Id) .Where(x => x.IsSystem) .OrderByDescending(x => x.RoleLevel) .FirstOrDefault(reader => reader.GetInt32(0))); }
/// <summary> /// 通过GUID获取存储文件实例。 /// </summary> /// <param name="id">媒体文件Id。</param> /// <returns>返回存储文件实例。</returns> public virtual async Task <StoredPhysicalFile> FindPhysicalFileAsync(Guid id) { var file = await _sfdb.AsQueryable().InnerJoin <MediaFile>((sf, mf) => sf.FileId == mf.FileId) .Where <MediaFile>(x => x.Id == id) .Select <MediaFile>(x => x.Name) .Select(x => new { x.FileId, x.ContentType }) .FirstOrDefaultAsync(reader => new StoredPhysicalFile(reader)); file.PhysicalPath = Path.Combine(_media, file.PhysicalPath); return(file); }
/// <summary> /// 加载所有网站。 /// </summary> /// <returns>返回所有网站。</returns> public virtual IEnumerable <SiteBase> LoadSites() { return(_sdb.AsQueryable() .Select(x => new { x.SiteId, x.SiteName, x.SiteKey, x.UpdatedDate }) .AsEnumerable(reader => new SiteBase { SiteId = reader.GetInt32(0), SiteName = reader.GetString(1), SiteKey = reader.GetString(2), UpdatedDate = reader.GetFieldValue <DateTimeOffset>(3) })); }
public PaginationList <Customer> GetItems(int?pageNumber) { try { int pageIndex = pageNumber ?? 1; int pageSize = 5; var source = _customerContext.AsQueryable(); int count = source.Count(); var items = source.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); return(new PaginationList <Customer>(items, count, pageIndex, pageSize)); } catch (Exception ex) { throw; } }
/// <summary> /// 获取用户列表。 /// </summary> /// <returns>返回用户列表实例。</returns> public async Task <IDictionary <int, string> > LoadUsersAsync() { var users = await _userdb.AsQueryable().WithNolock() .Select(x => new { x.Id, x.NickName }) .OrderBy(x => x.NickName) .AsEnumerableAsync(x => KeyValuePair.Create(x.GetInt32(0), x.GetString(1))); return(users.ToDictionary(x => x.Key, x => x.Value)); }
/// <summary> /// 获取应用程序所包含的服务Id列表。 /// </summary> /// <param name="appid">应用程序Id。</param> /// <returns>返回服务Id列表。</returns> public Task <List <int> > LoadApplicationServicesAsync(Guid appid) { return(_cache.GetOrCreateAsync(GetCacheKey(appid), async ctx => { ctx.SetDefaultAbsoluteExpiration(); var services = await _asdb.AsQueryable().WithNolock() .Where(x => x.AppId == appid) .Select(x => x.ServiceId) .AsEnumerableAsync(reader => reader.GetInt32(0)); return services.ToList(); })); }
public string Execute(string key, string userId) { IQueryable <KeyKeyValue> kkvs = _dbContext .AsQueryable <KeyKeyValue>() .Where(kkv => kkv.Keys.Contains(key) && (string.IsNullOrEmpty(kkv.Scope) || kkv.Scope == userId)); if (!kkvs.Any()) { return(string.Empty); } KeyKeyValue keyKeyValue = kkvs.FirstOrDefault(kkv => kkv.Scope == userId) ?? kkvs.First(); if (keyKeyValue.AlternativeResponses.Count() > 1) { var number = Random.Next(-1, keyKeyValue.AlternativeResponses.Count()); return(number == -1 ? keyKeyValue.Response : keyKeyValue.AlternativeResponses.ElementAt(number)); } return(keyKeyValue.Response); }
public async Task ExecuteAsync(string userId, string value, ICollection <string> keys) { foreach (var key in keys) { var existingKey = _dbContext.AsQueryable <KeyKeyValue>() .FirstOrDefault(kkv => kkv.Keys.Contains(key) && kkv.Scope == userId); if (existingKey != null) { await _dbContext.DeleteAsync(existingKey); } } var kkvs = new KeyKeyValue() { Keys = keys, Response = value, AlternativeResponses = new List <string>(0), Scope = userId }; await _dbContext.SaveAsync(kkvs); }
/// <summary> /// 获取扩展列表。 /// </summary> /// <returns>返回扩展列表。</returns> public Task <IEnumerable <string> > LoadExtensionNamesAsync() { return(_mfdb.AsQueryable().Distinct(x => x.ExtensionName).AsEnumerableAsync(x => x.GetString(0))); }
/// <summary> /// 加载API。 /// </summary> /// <param name="applicationId">应用程序Id。</param> /// <returns>返回当前应用程序的API列表。</returns> public virtual IEnumerable <ApiDescriptor> LoadApplicationApis(int applicationId) { return(_apis.AsQueryable().InnerJoin <ApplicationService>((a, s) => a.Id == s.ServiceId) .Where <ApplicationService>(x => x.AppicationId == applicationId) .AsEnumerable()); }
/// <summary> /// 选择用户相关联字段。 /// </summary> /// <typeparam name="TModel">当前实例模型。</typeparam> /// <typeparam name="JModel">级联实例类型。</typeparam> /// <param name="context">数据操作接口实例对象。</param> /// <param name="expression">关联表达式。</param> /// <param name="select">选择返回列对象实例。</param> /// <returns>返回当前查询实例。</returns> public static IQueryable <TModel> JoinSelect <TModel, JModel>(this IDbContext <TModel> context, Expression <Func <TModel, JModel, bool> > expression, Expression <Func <JModel, object> > select) where TModel : class where JModel : class { return(context.AsQueryable().WithNolock().InnerJoin <JModel>(expression).Select().Select(select)); }
/// <summary> /// 提示搜索列。 /// </summary> /// <param name="name">搜索字符串。</param> /// <returns>返回检索的关键词列表。</returns> public virtual Task <IEnumerable <SearchIndex> > LoadSuggestions(string name) { return(_indexes.AsQueryable() .Where(x => x.Name.StartsWith(name)) .AsEnumerableAsync(10)); }