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