/// <summary> /// <see cref="CommonQueryCriteria"/> 查询的数据层实现。 /// </summary> /// <param name="criteria"></param> public virtual EntityList GetBy(CommonQueryCriteria criteria) { var table = f.Table(_repository); var q = f.Query(table); var allProperties = _repository.EntityMeta.ManagedProperties.GetNonReadOnlyCompiledProperties(); //拼装所有 Where 条件。 bool ignoreNull = criteria.IgnoreNull; foreach (var group in criteria.Groups) { IConstraint groupRes = null; foreach (var pm in group) { var property = allProperties.Find(pm.PropertyName); if (property != null) { var op = pm.Operator; var value = pm.Value; bool ignored = false; if (ignoreNull) { ignored = !DomainHelper.IsNotEmpty(value); } else { if (value is string || (value == null && property.PropertyType == typeof(string))) { #region 如果是对空字符串进行模糊匹配,那么这个条件需要被忽略。 var strValue = value as string; if (string.IsNullOrEmpty(strValue)) { switch (op) { case PropertyOperator.Like: case PropertyOperator.Contains: case PropertyOperator.StartsWith: case PropertyOperator.EndsWith: case PropertyOperator.NotLike: case PropertyOperator.NotContains: case PropertyOperator.NotStartsWith: case PropertyOperator.NotEndsWith: ignored = true; break; default: break; } } #endregion } } if (!ignored) { var propertyRes = f.Constraint(table.Column(property), op, value); groupRes = f.Binary(groupRes, group.Concat, propertyRes); } } } q.Where = f.Binary(groupRes, criteria.Concat, q.Where); } //OrderBy if (!string.IsNullOrWhiteSpace(criteria.OrderBy)) { var orderBy = allProperties.Find(criteria.OrderBy); if (orderBy != null) { var dir = criteria.OrderByAscending ? OrderDirection.Ascending : OrderDirection.Descending; q.OrderBy.Add(table.Column(orderBy), dir); } } return(this.QueryList(q, criteria.PagingInfo, criteria.EagerLoad)); }
/// <summary> /// 通过 CommonQueryCriteria 来查询实体个数。 /// </summary> /// <param name="criteria">常用查询条件。</param> /// <returns></returns> protected virtual int DoCountBy(CommonQueryCriteria criteria) { return(this.FetchCount(criteria)); }
private EntityList FetchBy(CommonQueryCriteria criteria) { return(this.GetBy(criteria)); }
/// <summary> /// 通过 <see cref="CommonQueryCriteria"/> 来查询实体列表。 /// </summary> /// <param name="criteria">常用查询条件。</param> /// <returns></returns> protected virtual EntityList DoGetBy(CommonQueryCriteria criteria) { return(this.FetchList(criteria)); }
/// <summary> /// 通过 CommonQueryCriteria 来查询单一实体。 /// </summary> /// <param name="criteria">常用查询条件。</param> /// <returns></returns> protected virtual Entity DoGetFirstBy(CommonQueryCriteria criteria) { return(this.FetchFirst(criteria)); }
/// <summary> /// 通过 CommonQueryCriteria 来查询实体的个数。 /// </summary> /// <param name="criteria">常用查询条件。</param> /// <returns></returns> public int CountBy(CommonQueryCriteria criteria) { return(this.DoCountBy(criteria)); }
/// <summary> /// 通过 CommonQueryCriteria 来查询实体列表。 /// </summary> /// <param name="criteria">常用查询条件。</param> /// <returns></returns> public Entity GetFirstBy(CommonQueryCriteria criteria) { return(this.DoGetFirstBy(criteria)); }
/// <summary> /// 通过 <see cref="CommonQueryCriteria"/> 来查询实体列表。 /// </summary> /// <param name="criteria">常用查询条件。</param> /// <returns></returns> public EntityList GetBy(CommonQueryCriteria criteria) { return(this.DoGetBy(criteria)); }
protected virtual long DoCountBy(CommonQueryCriteria criteria) { return((long)_dataProvider.GetBy(criteria)); }
protected virtual Entity DoGetFirstBy(CommonQueryCriteria criteria) { return((Entity)_dataProvider.GetBy(criteria)); }