Example #1
0
        private QueryTree.Expression ParseMemberExpression(MemberExpression expression)
        {
            var startedWith = expression;

            while (!_session.Factory.Mappings.MappingsByType.ContainsKey(expression.Member.DeclaringType))
            {
                expression = expression.Expression as MemberExpression;
                if (expression == null)
                {
                    var objectMember = Expression.Convert(startedWith, typeof(object));
                    var getterLambda = Expression.Lambda <Func <object> >(objectMember);
                    var getter       = getterLambda.Compile();
                    var value        = getter();

                    var ex = new QueryTree.ConstantExpression
                    {
                        Value = value
                    };
                    _constantExpressions.Add(ex);

                    return(ex);
                }
            }

            return(ParseColumnExpression(expression));
        }
Example #2
0
        private QueryTree.ConstantExpression ParseConstantExpression(object value)
        {
            var ex = new QueryTree.ConstantExpression
            {
                Value = value
            };

            _constantExpressions.Add(ex);

            return(ex);
        }
Example #3
0
        private QueryTree.ConstantExpression ParseFieldExpression(MemberExpression expression)
        {
            var fieldInfo          = expression.Member as FieldInfo;
            var constantExpression = expression.Expression as ConstantExpression;

            var ex = new QueryTree.ConstantExpression
            {
                Value = fieldInfo.GetValue(constantExpression.Value)
            };

            _constantExpressions.Add(ex);

            return(ex);
        }
Example #4
0
 public QueryTree.ConstantExpression Catch(QueryTree.ConstantExpression expression)
 {
     Constants.Add(expression);
     return(expression);
 }