/// <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); }
/// <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); }
/// <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); }
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); }
/// <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)); }
/// <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)); }
/// <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)); }