protected IEnumerable <EntityAttribute> AddGenericRelationshipAttributes(AttributesMode includeCollections, string prefix = null) { var relationshipAttributes = new List <EntityAttribute>(); var associations = includeCollections == AttributesMode.IncludeCollections ? Associations : NonListAssociations(); foreach (var usedRelationship in associations) { if (usedRelationship is SlicedEntityAssociation) { //add only the attributes that are used for a given relationship relationshipAttributes.AddRange(((SlicedEntityAssociation)usedRelationship).SlicedAttributes); } else { var relatedEntity = MetadataProvider.Entity(usedRelationship.To); foreach (var entityAttribute in GetAttributesToIterate(relatedEntity, usedRelationship)) { var key = prefix == null ? usedRelationship.Qualifier : prefix + usedRelationship.Qualifier; var clonedAttribute = entityAttribute.ClonePrependingContext(key); relationshipAttributes.Add(clonedAttribute); } } } return(relationshipAttributes); }
public IEnumerable <EntityAttribute> Attributes(AttributesMode includeCollections) { var entityAttributes = _schema.Attributes.ToList(); var associationAttributes = includeCollections == AttributesMode.IncludeCollections ? _relationshipAttributes.Value : _nonCollectionrelationshipAttributes.Value; entityAttributes.AddRange(associationAttributes); return(new HashSet <EntityAttribute>(entityAttributes)); }