コード例 #1
0
        /// <summary>
        /// 生成一个带别名的子查询
        /// </summary>
        /// <param name="aliasName"></param>
        /// <returns></returns>
        public TableRelation <TSub> SubQuery <TSub>(string aliasName)
            where TSub : Entity
        {
            TableRelation <TSub> tr = new TableRelation <TSub>(null);

            tr.section.SetQuerySection(section.SubQuery <TSub>(aliasName));
            return(tr);
        }
コード例 #2
0
ファイル: DbTrans.cs プロジェクト: windygu/MySoft.Data
        /// <summary>
        /// 返回一个From节
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public FromSection <T> From <T>(TableRelation <T> relation)
            where T : Entity
        {
            FromSection <T> section = From <T>();

            section.SetQuerySection(relation.Section.Query);

            //给查询设置驱动与事务
            section.Query.SetDbProvider(dbProvider, this);

            return(section);
        }
コード例 #3
0
ファイル: DbTrans.cs プロジェクト: windygu/mysoftsolution
        /// <summary>
        /// 返回一个Query节
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public QuerySection <T> From <T>(TableRelation <T> relation)
            where T : Entity
        {
            //重新实例化一个Query
            var query = new QuerySection <T>(relation.GetFromSection(), dbProvider, this);

            //处理前n条
            if (relation.GetTopSize() > 0)
            {
                query = query.GetTop(relation.GetTopSize());
            }

            return(query);
        }
コード例 #4
0
ファイル: FromSection.cs プロジェクト: windygu/mysoftsolution
        private FromSection <T> Join <TJoin>(TableRelation <TJoin> relation, string aliasName, WhereClip onWhere, JoinType joinType)
            where TJoin : Entity
        {
            //将TableRelation的对象添加到当前节
            this.entities.AddRange(relation.GetFromSection().TableEntities);

            TJoin entity = CoreHelper.CreateInstance <TJoin>();
            var   table  = entity.GetTable().As(aliasName);

            if ((IField)query.PagingField == null)
            {
                //标识列和主键优先,包含ID的列被抛弃
                query.SetPagingField(entity.PagingField);
            }

            string tableName = entity.GetTable().Name;

            if (aliasName != null)
            {
                tableName = aliasName;
            }

            //处理tableRelation关系
            string joinString = "(" + relation.GetFromSection().Query.QueryString + ") " + tableName;

            this.query.Parameters = relation.GetFromSection().Query.Parameters;

            string strJoin = string.Empty;

            if (onWhere != null)
            {
                strJoin = " ON " + onWhere.ToString();
            }

            //获取关联方式
            string join = GetJoinEnumString(joinType);

            if (this.relation != null)
            {
                this.tableName = " __[[ " + this.tableName;
                this.relation += " ]]__ ";
            }
            this.relation += join + joinString + strJoin;

            return(this);
        }
コード例 #5
0
ファイル: DbSession.cs プロジェクト: windygu/mysoftsolution
 /// <summary>
 /// 返回一个Query节
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <returns></returns>
 public QuerySection <T> From <T>(TableRelation <T> relation)
     where T : Entity
 {
     return(dbTrans.From <T>(relation));
 }
コード例 #6
0
ファイル: FromSection.cs プロジェクト: windygu/mysoftsolution
 /// <summary>
 /// 右连接查询
 /// </summary>
 /// <typeparam name="TJoin"></typeparam>
 /// <param name="relation"></param>
 /// <param name="aliasName"></param>
 /// <param name="onWhere"></param>
 /// <returns></returns>
 public FromSection <T> RightJoin <TJoin>(TableRelation <TJoin> relation, string aliasName, WhereClip onWhere)
     where TJoin : Entity
 {
     return(Join <TJoin>(relation, aliasName, onWhere, JoinType.RightJoin));
 }
コード例 #7
0
ファイル: FromSection.cs プロジェクト: windygu/mysoftsolution
 /// <summary>
 /// 右连接查询
 /// </summary>
 /// <typeparam name="TJoin"></typeparam>
 /// <param name="relation"></param>
 /// <param name="onWhere"></param>
 /// <returns></returns>
 public FromSection <T> RightJoin <TJoin>(TableRelation <TJoin> relation, WhereClip onWhere)
     where TJoin : Entity
 {
     return(RightJoin(relation, null, onWhere));
 }