public static Interface.IQueryable <T, T2> GetQueryable <T, T2>(Config currentConnectionConfig)
 {
     if (currentConnectionConfig.DbType == DbType.SqlServer)
     {
         //                return new sql<T, T2>();
     }
     else
     {
         string className = "Queryable";
         className = GetClassName(currentConnectionConfig.DbType.ToString(), className);
         Interface.IQueryable <T, T2> result = CreateInstance <T, T2, Interface.IQueryable <T, T2> >(className);
         return(result);
     }
     return(null);
 }
Beispiel #2
0
        protected Interface.IQueryable <T> CreateQueryable <T>(Interface.IQueryable <T> result) where T : class, new()
        {
            var sqlBuilder = InstanceFactory.GetSqlbuilder(CurrentConfig);

            result.Context    = this.Context;
            result.SqlBuilder = sqlBuilder;
            result.SqlBuilder.QueryBuilder         = InstanceFactory.GetQueryBuilder(CurrentConfig);
            result.SqlBuilder.QueryBuilder.Builder = sqlBuilder;
            result.SqlBuilder.Context = result.SqlBuilder.QueryBuilder.Context = this.Context;
            var EntityInfo = this.Context.EntityMaintenance.GetEntityInfo <T>();

            result.SqlBuilder.QueryBuilder.EntityType        = typeof(T);
            result.SqlBuilder.QueryBuilder.EntityName        = EntityInfo.DbTableName;
            result.SqlBuilder.QueryBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(CurrentConfig);
            return(result);
        }
Beispiel #3
0
 protected Interface.IQueryable <T> CreateQueryable <T>() where T : class, new()
 {
     Interface.IQueryable <T> result = InstanceFactory.GetQueryable <T>(this.CurrentConfig);
     return(CreateQueryable(result));
 }
Beispiel #4
0
        protected void CreateQueryJoin <T, T2>(Expression <Func <T, T2, bool> > whereExpression, JoinType JoinType, Type[] types, Interface.IQueryable <T> queryable) where T : class, new()
        {
            this.CreateQueryable <T>(queryable);
            string           TableA = string.Empty; string KeyA = string.Empty;
            string           TableB = string.Empty; string KeyB = string.Empty;
            List <Parameter> paramters = new List <Parameter>();
            //
            BinaryExpression binaryExpression = whereExpression.Body as BinaryExpression;

            TableA = ((MemberExpression)binaryExpression.Left).Member.DeclaringType.CustomAttributes.ElementAt(0).ConstructorArguments.ElementAt(0).Value.ToString();
            KeyA   = ((MemberExpression)binaryExpression.Left).Member.CustomAttributes.ElementAt(0).NamedArguments.FirstOrDefault(c => c.MemberName.Equals("ColumnName")).TypedValue.Value.ToString();

            Expression      right = binaryExpression.Right;//right part of the "==" of your predicate
            UnaryExpression data  = binaryExpression.Right as UnaryExpression;
            var             exp   = data.Operand;

            TableB = ((MemberExpression)exp).Member.DeclaringType.CustomAttributes.ElementAt(0).ConstructorArguments.ElementAt(0).Value.ToString();
            KeyB   = ((MemberExpression)exp).Member.CustomAttributes.ElementAt(0).NamedArguments.FirstOrDefault(c => c.MemberName.Equals("ColumnName")).TypedValue.Value.ToString();

            StringBuilder sqlrequest = new StringBuilder();

            if (JoinType == JoinType.Inner)
            {
                sqlrequest.AppendFormat("SELECT * FROM {0} INNER JOIN {1} ON {0}.{2} = {1}.{3}", TableA, TableB, KeyA, KeyB);
            }

            if (JoinType == JoinType.Left)
            {
                sqlrequest.AppendFormat("SELECT * FROM {0} LEFT JOIN {1} ON {0}.{2} = {1}.{3}", TableA, TableB, KeyA, KeyB);
            }

            if (JoinType == JoinType.leftWithoutIntersection)
            {
                sqlrequest.AppendFormat("SELECT * FROM {0} LEFT JOIN {1} ON {0}.{2} = {1}.{3} WHERE {1}.{3} IS NULL", TableA, TableB, KeyA, KeyB);
            }

            if (JoinType == JoinType.Right)
            {
                sqlrequest.AppendFormat("SELECT * FROM {0} RIGHT JOIN {1} ON {0}.{2} = {1}.{3}", TableA, TableB, KeyA, KeyB);
            }

            if (JoinType == JoinType.RightWithoutIntersection)
            {
                sqlrequest.AppendFormat("SELECT * FROM {0} RIGHT JOIN {1} ON {0}.{2} = {1}.{3} WHERE {1}.{3} IS NULL", TableA, TableB, KeyA, KeyB);
            }

            if (JoinType == JoinType.FULL)
            {
                sqlrequest.AppendFormat("SELECT * FROM {0} FULL JOIN {1} ON {0}.{2} = {1}.{3}", TableA, TableB, KeyA, KeyB);
            }
            queryable.QueryBuilder.sql = sqlrequest;
        }