GetExpression() 추상적인 개인적인 메소드

abstract private GetExpression ( Alias tableAlias, QueryBinder binder, Expression id ) : Expression
tableAlias Alias
binder QueryBinder
id System.Linq.Expressions.Expression
리턴 System.Linq.Expressions.Expression
예제 #1
0
        internal Expression FieldExpression(Alias tableAlias, QueryBinder binder, bool withRowId)
        {
            var rowId = RowIdExpression(tableAlias);

            var exp = Field.GetExpression(tableAlias, binder, rowId);

            if (!withRowId)
            {
                return(exp);
            }

            var type = this.Field.FieldType;

            var ci = typeof(MList <> .RowIdElement).MakeGenericType(type).GetConstructor(new[] { type, typeof(PrimaryKey), typeof(int?) });

            var order = Order == null ? (Expression)Expression.Constant(null, typeof(int?)) : OrderExpression(tableAlias).Nullify();

            return(Expression.New(ci, exp, rowId.UnNullify(), order));
        }
예제 #2
0
        internal Expression FieldExpression(Alias tableAlias, QueryBinder binder, IntervalExpression?externalPeriod, bool withRowId)
        {
            var rowId         = RowIdExpression(tableAlias);
            var parentId      = new PrimaryKeyExpression(new ColumnExpression(this.BackReference.Type.Nullify(), tableAlias, this.BackReference.Name));
            var entityContext = new EntityContextInfo(parentId, rowId);

            var exp = Field.GetExpression(tableAlias, binder, rowId, externalPeriod, entityContext);

            if (!withRowId)
            {
                return(exp);
            }

            var type = this.Field.FieldType;

            var ci = typeof(MList <> .RowIdElement).MakeGenericType(type).GetConstructor(new[] { type, typeof(PrimaryKey), typeof(int?) });

            var order = Order == null ? (Expression)Expression.Constant(null, typeof(int?)) : OrderExpression(tableAlias).Nullify();

            return(Expression.New(ci, exp, rowId.UnNullify(), order));
        }