internal override void Visit(IVisitable visitable) { var item = visitable as EFContainer; if (item == null) { return; } if (item.State != EFElementState.Normalized) { return; } try { item.Resolve(_artifactSet); } catch (Exception e) { // reset element state item.State = EFElementState.ResolveAttempted; string name = null; var nameable = item as EFNameableItem; if (nameable != null) { name = nameable.LocalName.Value; } else { var element = item.XObject as XElement; if (element != null) { name = element.Name.LocalName; } else { name = item.SemanticName; } } var message = string.Format(CultureInfo.CurrentCulture, Resources.ErrorResolvingItem, name, e.Message); var errorInfo = new ErrorInfo( ErrorInfo.Severity.ERROR, message, item, ErrorCodes.FATAL_RESOLVE_ERROR, ErrorClass.ResolveError); _artifactSet.AddError(errorInfo); } if (item.State != EFElementState.Resolved) { var efElement = item as EFElement; if (efElement != null) { _missedCount++; if (!_missed.Contains(efElement)) { _missed.Add(efElement); } } } }
protected override void DoResolve(EFArtifactSet artifactSet) { base.DoResolve(artifactSet); // a given condition can only have mapping to a property (E-Space) or a column (S-Space) // but not to both if (Name.Status == BindingStatus.Known && ColumnName.Status == BindingStatus.Known) { var errorInfo = new ErrorInfo( ErrorInfo.Severity.ERROR, Resources.RESOLVE_CONDITION_BOUND_TO_PROP_AND_COLUMN, this, ErrorCodes.RESOLVE_CONDITION_BOUND_TO_PROP_AND_COLUMN, ErrorClass.ResolveError); artifactSet.AddError(errorInfo); } else if (Name.Status == BindingStatus.Known || ColumnName.Status == BindingStatus.Known) { State = EFElementState.Resolved; } }