コード例 #1
0
        /// <summary>
        /// 返回业务模型对象全部的结果查询表达式
        /// </summary>
        /// <returns></returns>
        public virtual IQueryable <TModel> GetQuery()
        {
            IQueryable <TEntity> query = _innerDataProvider.GetQuery();

            if (typeof(MultiLanguage).IsAssignableFrom(typeof(TEntity)))
            {
                query = query.Include("LangTexts");
            }

            //如果实现逻辑删除接口,并且没有改写EFAuditDataSerice,则在此加条件
            if (typeof(ICanLogicalDeleteEntity).IsAssignableFrom(typeof(TEntity)) && _innerDataProvider.GetType() == typeof(EFAuditDataService <TEntity>))
            {
                query = query.Where("IsDeleted=false");
            }

            if (typeof(IDataRule).IsAssignableFrom(typeof(TEntity)))
            {
                var context = _innerDataProvider.GetContext();
                var userId  = AppManager.Instance.GetCurrentUserId().ToInt();
                query = query.Where(t => context.Set <Sys_DataRule>().Any(dr => dr.BillId == t.Id && dr.ObjectId == userId));
            }
            var langMapper = new LangDataMapper <TModel, TEntity>();
            var duQuery    = new DeptUserAuthQuery <TModel>();

            return(duQuery.GetQuery(query.ProjectTo <TModel>()));
        }