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(')'); }
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(')'); }
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(')'); }
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(); }