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