private static string AliasAttribute(EntityMetadata entityMetadata, string alias, EntityAttribute attribute, string context) { var contextToUse = context ?? entityMetadata.Name; var query = attribute.GetQueryReplacingMarkers(contextToUse); query = BaseQueryUtil.EvaluateServiceQuery(query); return(string.Format("{0} as {1}", query, alias)); }
public static string Build(EntityMetadata entityMetadata, EntityAssociation association) { var sb = new StringBuilder(); sb.AppendFormat("left join {0} on (", BaseQueryUtil.AliasEntity(association.To, association.Qualifier)); var attributes = association.Attributes as IList <EntityAssociationAttribute> ?? association.Attributes.ToList(); for (var i = 0; i < attributes.Count; i++) { var suffix = (i < attributes.Count - 1) ? " and " : ")"; var attribute = attributes[i]; if (null != attribute.Query) { var query = attribute.GetQueryReplacingMarkers(association.Qualifier); query = BaseQueryUtil.EvaluateServiceQuery(query); sb.Append(query + suffix); } else if (null != attribute.From) { var entityNameToUse = association.EntityName ?? entityMetadata.Name; var from = Parse(entityNameToUse, attribute.From); var to = attribute.To != null?Parse(association.Qualifier, attribute.To) : ParseLiteral(attribute); sb.AppendFormat("{0} = {1}" + suffix, from, to); } else { var value = ParseLiteral(attribute); sb.AppendFormat("{0}.{1} = {2}" + suffix, association.Qualifier, attribute.To, value); } } return(sb.ToString()); }