Exemple #1
0
        public override void Format(NodeExpression finalExpression, IQueryMapping mapping)
        {
            MethodCallNode methodCallNode = (MethodCallNode)binary.LeftNode;
            ConstantNode   methodCallArg  = (ConstantNode)binary.RightNode;

            if (!mapping.Mappings.TryGetValue(methodCallNode.MemberName, out var identifier))
            {
                identifier = methodCallNode.MemberName;
            }

            finalExpression.Append('(');
            finalExpression.Append(identifier);

            finalExpression.Append(' ');
            finalExpression.Append(OperationAsString(binary.Operation));
            finalExpression.Append(' ');

            var parameterName = methodCallNode.MemberName.Replace(".", "");
            var type          = methodCallArg.ParameterType;


            if (type != typeof(string) && (type.IsArray || typeof(IEnumerable).IsAssignableFrom(type)))
            {
                parameterName += "Collection";
            }

            finalExpression.Append(methodCallNode.Formatter($"@{parameterName}"));

            finalExpression.Parameters.Add(new NodeParameter(parameterName, methodCallArg.Value));
            finalExpression.Append(')');
        }
Exemple #2
0
        public static NodeExpression CreateResult(Node node, IQueryMapping mapping)
        {
            var finalExpression = new NodeExpression();

            SqlFormatter.GetForNode(node).Format(finalExpression, mapping);

            return(finalExpression);
        }
        public void AddProperty(IQueryMapping property)
        {
            if (GetMapping(property.Alias) != null)
            {
                throw new InvalidOperationException($"The property '{property.Alias}' have been defined twice.");
            }

            _mappings.Add(property);
        }
        public override void Format(NodeExpression finalExpression, IQueryMapping mapping)
        {
            ConstantNode c1 = (ConstantNode)binary.LeftNode;
            ConstantNode c2 = (ConstantNode)binary.RightNode;

            finalExpression.Append('(');
            finalExpression.Append(c1.Value);
            finalExpression.Append(' ');
            finalExpression.Append(OperationAsString(binary.Operation));
            finalExpression.Append(' ');
            finalExpression.Append(c2.Value);
            finalExpression.Append(')');
        }
        public override void Format(NodeExpression finalExpression, IQueryMapping mapping)
        {
            finalExpression.Append('(');

            GetForNode(binary.LeftNode).Format(finalExpression, mapping);

            finalExpression.Append(' ');
            finalExpression.Append(OperationAsString(binary.Operation));
            finalExpression.Append(' ');

            GetForNode(binary.RightNode).Format(finalExpression, mapping);

            finalExpression.Append(')');
        }
Exemple #6
0
        public override void Format(NodeExpression finalExpression, IQueryMapping mapping)
        {
            var me = (MemberAccessNode)binary.LeftNode;
            var ce = (ConstantNode)binary.RightNode;

            finalExpression.Append('(');

            FormatMemberExpression(me, ce, finalExpression, mapping);

            finalExpression.Append(' ');

            finalExpression.Append((ce.Value is null && !ce.ForceParameter)
                    ? (binary.Operation == Operation.Equal ? "IS NULL" : "IS NOT NULL")
                    :
                                   OperationAsString(binary.Operation));

            FormatValueExpression(me, ce, finalExpression);

            finalExpression.Append(')');
        }
Exemple #7
0
        private void FormatMemberExpression(MemberAccessNode me, ConstantNode ce, NodeExpression finalExpression, IQueryMapping mapping)
        {
            var memberName = me.Parent != null ? $"{me.Parent.MemberName}.{me.MemberName}" : me.MemberName;

            if (me.MemberName.StartsWith('@'))
            {
                var parameterName = (me.Parent != null ? $"{me.Parent.MemberName}{me.MemberName}" : me.MemberName)
                                    .Replace(".", "")
                                    .Replace("@", "");

                var type = ce.ParameterType;

                if (type != typeof(string) && (type.IsArray || typeof(IEnumerable).IsAssignableFrom(type)))
                {
                    parameterName += "Collection";
                }
                finalExpression.Append('@');
                finalExpression.Append(parameterName);
            }
            else
            {
                if (!mapping.Mappings.TryGetValue(memberName, out var identifier))
                {
                    identifier = memberName;
                }

                finalExpression.Append(identifier);
            }
        }
 public void Setup()
 {
     mapping = new TestModelMapping();
 }