Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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());
        }