Exemplo n.º 1
0
        /// <summary>
        /// Expands the check.
        /// </summary>
        /// <param name="element">The element.</param>
        /// <param name="metadata">The metadata.</param>
        /// <returns>
        /// A sequence of check elements.
        /// </returns>
        private static IEnumerable <XElement> ExpandCheck(XElement element, IDbMetadata metadata)
        {
            var entityName = element.FindAncestorElementAttribute("Entity", "Name");

            if (element.Attribute("Match") == null || entityName == null)
            {
                yield return(element);
            }
            else
            {
                Regex match = new Regex(element.Attribute("Match").Value, RegexOptions.IgnoreCase);

                var matchedTables = metadata
                                    .AllColumns(entityName)
                                    .Where(t => match.IsMatch(t));

                foreach (var column in matchedTables)
                {
                    var expandedElement = new XElement(element);
                    expandedElement.SetAttributeValue("Field", column);

                    element.Parent.Add(expandedElement);

                    RaiseExpansionEvent(expandedElement, match.ToString(), column);

                    yield return(expandedElement);
                }
            }
        }