示例#1
0
 private void Clear()
 {
     SqlBuilder.Clear();
     JoinRelations.Clear();
     WhereClause.Clear();
     Parameters.Clear();
     OrderByFields.Clear();
     GroupByFields.Clear();
     SelectFields.Clear();
 }
示例#2
0
        /// <summary>
        /// 内连接 参数决定顺序
        /// </summary>
        /// <typeparam name="TLeft"></typeparam>
        /// <typeparam name="TRight"></typeparam>
        /// <param name="on"></param>
        /// <returns></returns>
        public JoinQuery InnerJoin <TLeft, TRight>(Expression <Func <TLeft, TRight, bool> > on) where TLeft : class, new() where TRight : class, new()
        {
            JoinRelation link = new JoinRelation {
                JoinType = JoinType.Inner
            };
            SqlVisitor visitor = new SqlVisitor(DbContext.DataBase.DBType, callIndex++, WithAlias);

            link.LeftTable = Caches.EntityInfoCache.Get(typeof(TLeft)).TableName;
            if (WithAlias)
            {
                link.LeftTableAlias = on.Parameters[0].Name;
            }
            link.RightTable = Caches.EntityInfoCache.Get(typeof(TRight)).TableName;
            if (WithAlias)
            {
                link.RightTableAlias = on.Parameters[1].Name;
            }
            link.OnSql = visitor.Translate(on);
            Parameters.AddRange(visitor.Parameters);
            JoinRelations.Add(link);
            return(this);
        }