IHqlQuery

    /// 动态创建查询ContentItem
    public interface IHqlQuery {

        IContentManager ContentManager { get; }

        /// <summary>
        /// Add content type constraints to the query.
        /// </summary>
        IHqlQuery ForType(params string[] contentTypes);
        
        /// <summary>
        /// Adds versioning options to the query.
        /// </summary>
        IHqlQuery ForVersion(VersionOptions options);

        /// <summary>
        /// Defines the resulting type.
        /// </summary>
        /// <returns>An <see cref="IHqlQuery&lt;T&gt;"/></returns>
        IHqlQuery<T> ForPart<T>() where T : IContent;

        /// <summary>
        /// Executes the query and returns all results.
        /// </summary>
        IEnumerable<ContentItem> List();

        /// <summary>
        /// Returns a subset of the matching content items.
        /// </summary>
        IEnumerable<ContentItem> Slice(int skip, int count);

        /// <summary>
        /// Returns the number of matching content items.
        /// </summary>
        int Count();

        /// <summary>
        /// Adds a join to a the query.
        /// </summary>
        /// <param name="alias">An expression pointing to the joined relationship.</param>
        IHqlQuery Join(Action<IAliasFactory> alias);

        /// <summary>
        /// Adds a where constraint to the query.
        /// </summary>
        /// <param name="alias">An expression pointing to the joined relationship.</param>
        /// <param name="predicate">A predicate expression.</param>
        IHqlQuery Where(Action<IAliasFactory> alias, Action<IHqlExpressionFactory> predicate);

        /// <summary>
        /// Adds a join to a specific relationship.
        /// </summary>
        /// <param name="alias">An expression pointing to the joined relationship.</param>
        /// <param name="order">An order expression.</param>
        IHqlQuery OrderBy(Action<IAliasFactory> alias, Action<IHqlSortFactory> order);
    }

    /// <summary>
    /// Reprensents dynamically created query on Content Items, having a specific Content Part.
    /// </summary>
    public interface IHqlQuery<TPart> where TPart : IContent {

        /// <summary>
        /// Add content type constraints to the query.
        /// </summary>
        IHqlQuery<TPart> ForType(params string[] contentTypes);

        /// <summary>
        /// Adds versioning options to the query.
        /// </summary>
        IHqlQuery<TPart> ForVersion(VersionOptions options);

        /// <summary>
        /// Executes the query and returns all results.
        /// </summary>
        IEnumerable<TPart> List();

        /// <summary>
        /// Returns a subset of the matching content items.
        /// </summary>
        IEnumerable<TPart> Slice(int skip, int count);

        /// <summary>
        /// Returns the number of matching content items.
        /// </summary>
        int Count();

        /// <summary>
        /// Adds a join to a the query.
        /// </summary>
        /// <param name="alias">An expression pointing to the joined relationship.</param>
        IHqlQuery<TPart> Join(Action<IAliasFactory> alias);

        /// <summary>
        /// Adds a where constraint to the query.
        /// </summary>
        /// <param name="alias">An expression pointing to the joined relationship.</param>
        /// <param name="predicate">A predicate expression.</param>
        IHqlQuery<TPart> Where(Action<IAliasFactory> alias, Action<IHqlExpressionFactory> predicate);

        /// <summary>
        /// Adds a join to a specific relationship.
        /// </summary>
        /// <param name="alias">An expression pointing to the joined relationship.</param>
        /// <param name="order">An order expression.</param>
        IHqlQuery<TPart> OrderBy(Action<IAliasFactory> alias, Action<IHqlSortFactory> order);
    }

    public interface IAlias {

        /// <summary>
        /// The name of the alias.
        /// </summary>
        string Name { get; }
    }

    public interface IAliasFactory {
        /// <summary>
        /// Creates a join on a content part record or returns it if it already exists.
        /// </summary>
        IAliasFactory ContentPartRecord<TRecord>() where TRecord : ContentPartRecord;
        
        /// <summary>
        /// Creates a join on a content part record or returns it if it already exists.
        /// </summary>
        IAliasFactory ContentPartRecord(Type contentPartRecord);

        /// <summary>
        /// Creates a join based on a property, or returns it if it already exists.
        /// </summary>
        IAliasFactory Property(string propertyName, string alias);
        
        /// <summary>
        /// Returns an existing alias by its name.
        /// </summary>
        IAliasFactory Named(string alias);

        /// <summary>
        /// Returns an the <see cref="ContentItemRecord"/> alias.
        /// </summary>
        IAliasFactory ContentItem();

        /// <summary>
        /// Returns an the <see cref="ContentItemVersionRecord"/> alias.
        /// </summary>
        IAliasFactory ContentItemVersion();

        /// <summary>
        /// Returns an the <see cref="ContentTypeRecord"/> alias.
        /// </summary>
        IAliasFactory ContentType();
    }

    public interface IHqlSortFactory {
        /// <summary>
        /// Sorts by ascending order
        /// </summary>
        void Asc(string propertyName);

        /// <summary>
        /// Sorts by descending order
        /// </summary>
        void Desc(string propertyName);

        /// <summary>
        /// Sorts randomly
        /// </summary>
        void Random();
    }
}

转载于:https://www.cnblogs.com/ibrady/archive/2012/08/17/2643868.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值