示例#1
0
        internal StringBuilder AsEsql(StringBuilder builder, string blockAlias, int indentLevel)
        {
            StringUtil.IndentNewLine(builder, indentLevel + 1);
            builder.Append("RELATIONSHIP(");
            var fields = new List <string>();

            // If the variable is a relation end, we will gets it scope Extent, e.g., CPerson1 for the CPerson end of CPersonAddress1.
            builder.Append("CREATEREF(");
            CqlWriter.AppendEscapedQualifiedName(builder, m_toEndEntitySet.EntityContainer.Name, m_toEndEntitySet.Name);
            builder.Append(", ROW(");
            foreach (var memberPath in m_toEndEntityKeyMemberPaths)
            {
                var fullFieldAlias = CqlWriter.GetQualifiedName(blockAlias, memberPath.CqlFieldAlias);
                fields.Add(fullFieldAlias);
            }
            StringUtil.ToSeparatedString(builder, fields, ", ", null);
            builder.Append(')');
            builder.Append(",");
            CqlWriter.AppendEscapedTypeName(builder, m_toEndEntityType);
            builder.Append(')');

            builder.Append(',');
            CqlWriter.AppendEscapedTypeName(builder, m_associationSet.ElementType);
            builder.Append(',');
            CqlWriter.AppendEscapedName(builder, m_fromEnd.Name);
            builder.Append(',');
            CqlWriter.AppendEscapedName(builder, m_toEnd.Name);
            builder.Append(')');
            builder.Append(' ');
            return(builder);
        }
示例#2
0
        internal StringBuilder AsEsql(
            StringBuilder builder,
            string blockAlias,
            int indentLevel)
        {
            StringUtil.IndentNewLine(builder, indentLevel + 1);
            builder.Append("RELATIONSHIP(");
            List <string> stringList = new List <string>();

            builder.Append("CREATEREF(");
            CqlWriter.AppendEscapedQualifiedName(builder, this.m_toEndEntitySet.EntityContainer.Name, this.m_toEndEntitySet.Name);
            builder.Append(", ROW(");
            foreach (MemberPath entityKeyMemberPath in this.m_toEndEntityKeyMemberPaths)
            {
                string qualifiedName = CqlWriter.GetQualifiedName(blockAlias, entityKeyMemberPath.CqlFieldAlias);
                stringList.Add(qualifiedName);
            }
            StringUtil.ToSeparatedString(builder, (IEnumerable)stringList, ", ", (string)null);
            builder.Append(')');
            builder.Append(",");
            CqlWriter.AppendEscapedTypeName(builder, (EdmType)this.m_toEndEntityType);
            builder.Append(')');
            builder.Append(',');
            CqlWriter.AppendEscapedTypeName(builder, (EdmType)this.m_associationSet.ElementType);
            builder.Append(',');
            CqlWriter.AppendEscapedName(builder, this.m_fromEnd.Name);
            builder.Append(',');
            CqlWriter.AppendEscapedName(builder, this.m_toEnd.Name);
            builder.Append(')');
            builder.Append(' ');
            return(builder);
        }
示例#3
0
        internal override StringBuilder AsEsql(StringBuilder builder, MemberPath outputMember, string blockAlias)
        {
            AsCql(
                // createRef action
                (refScopeEntitySet, keyMemberOutputPaths) =>
            {
                // Construct a scoped reference: CreateRef(CPerson1Set, NewRow(pid1, pid2), CPerson1)
                EntityType refEntityType = (EntityType)(((RefType)outputMember.EdmType).ElementType);
                builder.Append("CreateRef(");
                CqlWriter.AppendEscapedQualifiedName(builder, refScopeEntitySet.EntityContainer.Name, refScopeEntitySet.Name);
                builder.Append(", row(");
                for (int i = 0; i < keyMemberOutputPaths.Count; ++i)
                {
                    if (i > 0)
                    {
                        builder.Append(", ");
                    }
                    // Given the member, we need its aliased name
                    string fullFieldAlias = CqlWriter.GetQualifiedName(blockAlias, keyMemberOutputPaths[i].CqlFieldAlias);
                    builder.Append(fullFieldAlias);
                }
                builder.Append("), ");
                CqlWriter.AppendEscapedTypeName(builder, refEntityType);
                builder.Append(')');
            },
                // createType action
                (membersOutputPaths) =>
            {
                // Construct an entity/complex/Association type in the Members order for fields: CPerson(CPerson1_Pid, CPerson1_Name)
                CqlWriter.AppendEscapedTypeName(builder, m_edmType);
                builder.Append('(');
                for (int i = 0; i < membersOutputPaths.Count; ++i)
                {
                    if (i > 0)
                    {
                        builder.Append(", ");
                    }
                    // Given the member, we need its aliased name: CPerson1_Pid
                    string fullFieldAlias = CqlWriter.GetQualifiedName(blockAlias, membersOutputPaths[i].CqlFieldAlias);
                    builder.Append(fullFieldAlias);
                }
                builder.Append(')');
            },
                outputMember);

            return(builder);
        }
示例#4
0
        internal string ToESqlString()
        {
            StringBuilder builder = new StringBuilder();

            builder.Append("\n\tSELECT ");

            if (m_selectDistinct == SelectDistinct.Yes)
            {
                builder.Append("DISTINCT ");
            }

            foreach (ProjectedSlot ps in m_projectedSlots)
            {
                MemberProjectedSlot jtn = ps as MemberProjectedSlot;
                StructuralType      st  = jtn.MemberPath.LeafEdmMember.DeclaringType;
                StringBuilder       sb  = new StringBuilder();
                jtn.MemberPath.AsEsql(sb, "e");
                builder.AppendFormat("{0}, ", sb.ToString());
            }
            //remove the extra-comma after the last slot
            builder.Remove(builder.Length - 2, 2);

            builder.Append("\n\tFROM ");
            EntitySetBase extent = m_extentMemberPath.Extent;

            CqlWriter.AppendEscapedQualifiedName(builder, extent.EntityContainer.Name, extent.Name);
            builder.Append(" AS e");

            if (m_whereClause.IsTrue == false)
            {
                builder.Append("\n\tWHERE ");

                StringBuilder qbuilder = new StringBuilder();
                m_whereClause.AsEsql(qbuilder, "e");

                builder.Append(qbuilder.ToString());
            }
            builder.Append("\n    ");

            return(builder.ToString());
        }
示例#5
0
 internal override StringBuilder AsEsql(
     StringBuilder builder,
     MemberPath outputMember,
     string blockAlias)
 {
     this.AsCql((Action <EntitySet, IList <MemberPath> >)((refScopeEntitySet, keyMemberOutputPaths) =>
     {
         EntityType elementType = (EntityType)((RefType)outputMember.EdmType).ElementType;
         builder.Append("CreateRef(");
         CqlWriter.AppendEscapedQualifiedName(builder, refScopeEntitySet.EntityContainer.Name, refScopeEntitySet.Name);
         builder.Append(", row(");
         for (int index = 0; index < keyMemberOutputPaths.Count; ++index)
         {
             if (index > 0)
             {
                 builder.Append(", ");
             }
             builder.Append(CqlWriter.GetQualifiedName(blockAlias, keyMemberOutputPaths[index].CqlFieldAlias));
         }
         builder.Append("), ");
         CqlWriter.AppendEscapedTypeName(builder, (EdmType)elementType);
         builder.Append(')');
     }), (Action <IList <MemberPath> >)(membersOutputPaths =>
     {
         CqlWriter.AppendEscapedTypeName(builder, this.m_edmType);
         builder.Append('(');
         for (int index = 0; index < membersOutputPaths.Count; ++index)
         {
             if (index > 0)
             {
                 builder.Append(", ");
             }
             builder.Append(CqlWriter.GetQualifiedName(blockAlias, membersOutputPaths[index].CqlFieldAlias));
         }
         builder.Append(')');
     }), outputMember);
     return(builder);
 }