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)); }
private QueryTree.ConstantExpression ParseConstantExpression(object value) { var ex = new QueryTree.ConstantExpression { Value = value }; _constantExpressions.Add(ex); return(ex); }
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); }
public QueryTree.ConstantExpression Catch(QueryTree.ConstantExpression expression) { Constants.Add(expression); return(expression); }